diff --git a/core/README.md b/core/README.md
new file mode 100644
index 000000000..673df705a
--- /dev/null
+++ b/core/README.md
@@ -0,0 +1,549 @@
+# README
+
+## Top-level Schemas
+
+* [Cluster library](./cluster.md "Cluster actions validation data formats") – `http://schema.nethserver.org/cluster.json`
+
+* [Get module status](./get-status-output.md "Get module instance running status") – `http://schema.nethserver.org/agent/get-status-output.json`
+
+* [List loki instances](./list-loki-instances-output.md) – `http://schema.nethserver.org/cluster/list-loki-instances-output.json`
+
+* [List module volumes](./list-volumes-output.md "A list of Podman volume names of the current module") – `http://schema.nethserver.org/agent/list-volumes-output.json`
+
+* [Node library](./node.md "Node actions validation data formats") – `http://schema.nethserver.org/node.json`
+
+* [Output for list-installed-modules](./list-installed-modules-output.md "list-installed-modules output") – `http://schema.nethserver.org/cluster/list-installed-modules-output.json`
+
+* [add-backup input](./add-backup-input.md "Configure a new backup instance") – `http://schema.nethserver.org/cluster/add-backup-input.json`
+
+* [add-backup output](./add-backup-output.md "The add-backup action returns the backup ID of the added item") – `http://schema.nethserver.org/cluster/add-backup-output.json`
+
+* [add-backup-repository input](./add-backup-repository-input.md "Input schema of the add-backup-repository action") – `http://schema.nethserver.org/cluster/add-backup-repository-input.json`
+
+* [add-backup-repository output](./add-backup-repository-output.md "Output schema of the add-backup-repository action") – `http://schema.nethserver.org/cluster/add-backup-repository-output.json`
+
+* [add-custom-zone input](./add-custom-zone-input.md "Add firewall configuration for a custom zone") – `http://schema.nethserver.org/node/add-custom-zone-input.json`
+
+* [add-external-domain input](./add-external-domain-input.md "Configure an external user domain") – `http://schema.nethserver.org/cluster/add-external-domain-input.json`
+
+* [add-external-provider input](./add-external-provider-input.md "Add a provider to an already configured external user domain") – `http://schema.nethserver.org/cluster/add-external-provider-input.json`
+
+* [add-favorite input](./add-favorite-input.md "Input schema of the add-favorite action") – `http://schema.nethserver.org/cluster/add-favorite-input.json`
+
+* [add-favorite output](./add-favorite-output.md "Output schema of the add-favorite action") – `http://schema.nethserver.org/cluster/add-favorite-output.json`
+
+* [add-internal-provider input](./add-internal-provider-input.md "Add a provider instance for a new or already existing internal user domain") – `http://schema.nethserver.org/cluster/add-internal-provider-input.json`
+
+* [add-module input](./add-module-input.md "Install a module on the worker node") – `http://schema.nethserver.org/node/add-module-input.json`
+
+* [add-module input](./add-module-input-1.md "Input schema of the add-module action") – `http://schema.nethserver.org/cluster/add-module-input.json`
+
+* [add-module output](./add-module-output.md "Return generated information of the newly added module") – `http://schema.nethserver.org/node/add-module-output.json`
+
+* [add-module output](./add-module-output-1.md "Output schema of the add-module action") – `http://schema.nethserver.org/cluster/add-module-output.json`
+
+* [add-node input](./add-node-input.md "Input schema of the add-node action") – `http://schema.nethserver.org/cluster/add-node-input.json`
+
+* [add-node output](./add-node-output.md "Output schema of the add-node action") – `http://schema.nethserver.org/cluster/add-node-output.json`
+
+* [add-public-service input](./add-public-service-input.md "Add firewall configuration for a new public service") – `http://schema.nethserver.org/node/add-public-service-input.json`
+
+* [add-repository input](./add-repository-input.md "Input schema of the add-repository action") – `http://schema.nethserver.org/cluster/add-repository-input.json`
+
+* [add-repository output](./add-repository-output.md "Output schema of the add-repository action") – `http://schema.nethserver.org/cluster/add-repository-output.json`
+
+* [add-tun input](./add-tun-input.md "Add a tun interface") – `http://schema.nethserver.org/node/add-tun-input.json`
+
+* [add-user input](./add-user-input.md "Create a user account in the Redis DB for the cluster administration web interface") – `http://schema.nethserver.org/cluster/add-user-input.json`
+
+* [add-user output](./add-user-output.md "No interesting information is returned") – `http://schema.nethserver.org/cluster/add-user-output.json`
+
+* [alter-backup input](./alter-backup-input.md "Configure a new backup instance") – `http://schema.nethserver.org/cluster/alter-backup-input.json`
+
+* [alter-backup-repository input](./alter-backup-repository-input.md "Input schema of the alter-backup-repository action") – `http://schema.nethserver.org/cluster/alter-backup-repository-input.json`
+
+* [alter-repository input](./alter-repository-input.md "Input schema of the alter-repository action") – `http://schema.nethserver.org/cluster/alter-repository-input.json`
+
+* [alter-repository output](./alter-repository-output.md "Output schema of the alter-repository action") – `http://schema.nethserver.org/cluster/alter-repository-output.json`
+
+* [alter-user input](./alter-user-input.md "Alter an user account in the Redis DB for the cluster administration web interface") – `http://schema.nethserver.org/cluster/alter-user-input.json`
+
+* [bind-user-domains-input](./bind-user-domains-input.md "Input schema of the bind-user-domains action") – `http://schema.nethserver.org/cluster/bind-user-domains-input.json`
+
+* [change-user-password output](./change-user-password-output.md "Just an empty object, representing a successful response") – `http://schema.nethserver.org/cluster/change-user-password-output.json`
+
+* [change-user-password-input](./change-user-password-input.md "Input schema of the change-user-password action") – `http://schema.nethserver.org/cluster/change-user-password-input.json`
+
+* [clone-module input](./clone-module-input.md "Clone the module state received from rsync") – `http://schema.nethserver.org/module/clone-module-input.json`
+
+* [clone-module input](./clone-module-input-1.md "Input schema of the clone-module action") – `http://schema.nethserver.org/cluster/clone-module-input.json`
+
+* [clone-module output](./clone-module-output.md "Output schema of the clone-module action") – `http://schema.nethserver.org/cluster/clone-module-output.json`
+
+* [configure-backup input](./configure-backup-input.md "Input schema of the basic configure-backup action") – `http://schema.nethserver.org/agent/configure-backup-input.json`
+
+* [create input](./create-input.md) – `http://schema.nethserver.org/example/create-input.json`
+
+* [create-cluster input](./create-cluster-input.md "Provide basic information required by the new cluster initialization procedure") – `http://schema.nethserver.org/cluster/create-cluster-input.json`
+
+* [create-cluster output](./create-cluster-output.md "Relevant information generated by the create-cluster action") – `http://schema.nethserver.org/cluster/create-cluster-output.json`
+
+* [create-module input](./create-module-input.md "Input schema of the basic create-module action") – `http://schema.nethserver.org/agent/create-module-input.json`
+
+* [download-cluster-backup output](./download-cluster-backup-output.md "Generate an URL to download an encrypted file containing the cluster backup") – `http://schema.nethserver.org/cluster/download-cluster-backup-output.json`
+
+* [download-cluster-backup-input](./download-cluster-backup-input.md "Input schema of the download-cluster-backup-input action") – `http://schema.nethserver.org/cluster/download-cluster-backup-input.json`
+
+* [get smarthost settings](./get-smarthost.md "Get the settings an external smarthost provider") – `http://schema.nethserver.org/cluster/get-smarthost.json`
+
+* [get-cluster-status output](./get-cluster-status-output.md "Output schema of the get-cluster-status action") – `http://schema.nethserver.org/cluster/get-cluster-status-output.json`
+
+* [get-defaults input](./get-defaults-input.md "The action expects a null value as input") – `http://schema.nethserver.org/cluster/get-defaults-input.json`
+
+* [get-defaults output](./get-defaults-output.md "Output schema of the get-defaults action") – `http://schema.nethserver.org/cluster/get-defaults-output.json`
+
+* [get-domain-group input](./get-domain-group-input.md "Get the details of the given group") – `http://schema.nethserver.org/cluster/get-domain-group-input.json`
+
+* [get-domain-group output](./get-domain-group-output.md "Return the details of a group") – `http://schema.nethserver.org/cluster/get-domain-group-output.json`
+
+* [get-domain-user input](./get-domain-user-input.md "Get the details of the given user") – `http://schema.nethserver.org/cluster/get-domain-user-input.json`
+
+* [get-domain-user output](./get-domain-user-output.md "Return the details of a user") – `http://schema.nethserver.org/cluster/get-domain-user-output.json`
+
+* [get-firewall-status output](./get-firewall-status-output.md "Output schema of the get-firewall-status action") – `http://schema.nethserver.org/node/get-firewall-status-output.json`
+
+* [get-fqdn output](./get-fqdn-output.md "Output schema of the get-fqdn action") – `http://schema.nethserver.org/node/get-fqdn-output.json`
+
+* [get-info output](./get-infp-output.md "Output schema of the get-info action") – `http://schema.nethserver.org/node/get-infp-output.json`
+
+* [get-node-status input](./get-node-status-input.md "The action expects a null value as input") – `http://schema.nethserver.org/node/get-node-status-input.json`
+
+* [get-node-status output](./get-node-status-output.md "Output schema of the get-node-status action") – `http://schema.nethserver.org/node/get-node-status-output.json`
+
+* [get-status input](./get-status-input.md "The action does not accept any input") – `http://schema.nethserver.org/agent/get-status-input.json`
+
+* [get-subscription](./get-subscription.md "Get support subscription attributes") – `http://schema.nethserver.org/cluster/get-subscription.json`
+
+* [get-support-session output](./get-support-session-output.md "Return the support session status") – `http://schema.nethserver.org/node/get-support-session-output.json`
+
+* [get-user-info input](./get-user-info-input.md "Input schema of the get-user-info action") – `http://schema.nethserver.org/cluster/get-user-info-input.json`
+
+* [get-user-info output](./get-user-info-output.md "Output schema of the get-user-info action") – `http://schema.nethserver.org/cluster/get-user-info-output.json`
+
+* [grant-actions input](./grant-actions-input.md "Set permissions with a list of grant assertions") – `http://schema.nethserver.org/cluster/grant-actions-input.json`
+
+* [grant-actions output](./grant-actions-output.md "Just an empty object, representing a successful response") – `http://schema.nethserver.org/cluster/grant-actions-output.json`
+
+* [import-module input](./import-module-input.md "Import the module state from an external procedure with rsync") – `http://schema.nethserver.org/module/import-module-input.json`
+
+* [import-module input](./import-module-input-1.md "Input schema of the import-module action") – `http://schema.nethserver.org/cluster/import-module-input.json`
+
+* [import-module output](./import-module-output.md "Output schema of the import-module action") – `http://schema.nethserver.org/cluster/import-module-output.json`
+
+* [join-cluster input](./join-cluster-input.md "Discard current Redis DB and installed modules, then join an existing cluster") – `http://schema.nethserver.org/cluster/join-cluster-input.json`
+
+* [join-cluster output](./join-cluster-output.md) – `http://schema.nethserver.org/cluster/join-cluster-output.json`
+
+* [join-node input](./join-node-input.md "Start WireGuard VPN, discard current Redis DB and start replication") – `http://schema.nethserver.org/cluster/join-node-input.json`
+
+* [list output](./list-output.md) – `http://schema.nethserver.org/example/list-output.json`
+
+* [list-backup-repositories output](./list-backup-repositories-output.md "Get the list of available backup repositories and the status of cluster backup password") – `http://schema.nethserver.org/cluster/list-backup-repositories-output.json`
+
+* [list-backups output](./list-backups-output.md "Get a list of backup configurations") – `http://schema.nethserver.org/cluster/list-backups-output.json`
+
+* [list-cluster-backup-repositories output](./list-cluster-backup-repositories-output.md "Get the list backup repository endpoints provided by cluster nodes") – `http://schema.nethserver.org/cluster/list-cluster-backup-repositories-output.json`
+
+* [list-core-modules output](./list-core-modules-output.md "List core modules output") – `http://schema.nethserver.org/cluster/list-core-modules-output.json`
+
+* [list-domain-groups input](./list-domain-groups-input.md "List groups of a given accounts domain") – `http://schema.nethserver.org/cluster/list-domain-groups-input.json`
+
+* [list-domain-groups output](./list-domain-groups-output.md "List groups of a given accounts domain") – `http://schema.nethserver.org/cluster/list-domain-groups-output.json`
+
+* [list-domain-users input](./list-domain-users-input.md "List users of a given accounts domain") – `http://schema.nethserver.org/cluster/list-domain-users-input.json`
+
+* [list-domain-users output](./list-domain-users-output.md "List users of a given accounts domain") – `http://schema.nethserver.org/cluster/list-domain-users-output.json`
+
+* [list-favorites input](./list-favorites-input.md "The action expects a null value as input") – `http://schema.nethserver.org/cluster/list-favorites-input.json`
+
+* [list-favorites output](./list-favorites-output.md "Output schema of the list-favorites action") – `http://schema.nethserver.org/cluster/list-favorites-output.json`
+
+* [list-installed-modules input](./list-installed-modules-input.md "The action does not accept any input") – `http://schema.nethserver.org/cluster/list-installed-modules-input.json`
+
+* [list-modules input](./list-modules-input.md "The action does not accept any input") – `http://schema.nethserver.org/cluster/list-modules-input.json`
+
+* [list-modules output](./list-modules-output.md "List modules output") – `http://schema.nethserver.org/cluster/list-modules-output.json`
+
+* [list-repositories input](./list-repositories-input.md "The action does not accept any input") – `http://schema.nethserver.org/cluster/list-repositories-input.json`
+
+* [list-repositories output](./list-repositories-output.md "Output schema of the list-repositories action") – `http://schema.nethserver.org/cluster/list-repositories-output.json`
+
+* [list-service-providers input](./list-service-providers-input.md "Input schema of the basic list-service-providers action") – `http://schema.nethserver.org/agent/list-service-providers-input.json`
+
+* [list-service-providers output](./list-service-providers-output.md "Output schema of the basic list-service-providers action") – `http://schema.nethserver.org/agent/list-service-providers-output.json`
+
+* [list-shortcuts output](./list-shortcuts-output.md "Output schema of the list-shortcuts action") – `http://schema.nethserver.org/cluster/list-shortcuts-output.json`
+
+* [list-updates input](./list-updates-input.md "The action does not accept any input") – `http://schema.nethserver.org/cluster/list-updates-input.json`
+
+* [list-updates output](./list-updates-output.md "List updates output") – `http://schema.nethserver.org/cluster/list-updates-output.json`
+
+* [list-user-domains output](./list-user-domains-output.md "Quickly get the user domains list and their basic configuration") – `http://schema.nethserver.org/cluster/list-user-domains-output.json`
+
+* [list-users output](./list-users-output.md "Output schema of the list-users action") – `http://schema.nethserver.org/cluster/list-users-output.json`
+
+* [promote-node input](./promote-node-input.md "Promote a node to cluster leader") – `http://schema.nethserver.org/cluster/promote-node-input.json`
+
+* [read-backup-repositories output](./read-backup-repositories-output.md "Read the content of all backup repositories") – `http://schema.nethserver.org/cluster/read-backup-repositories-output.json`
+
+* [read-backup-snaphots input](./read-backup-snapshots-input.md "Input schema of the read-backup-snapshots action") – `http://schema.nethserver.org/cluster/read-backup-snapshots-input.json`
+
+* [read-backup-snapshots output](./read-backup-snapshots-output.md "Read the snaphost list of a given backup") – `http://schema.nethserver.org/cluster/read-backup-snapshots-output.json`
+
+* [remove-backup input](./remove-backup-input.md "Remove a backup object") – `http://schema.nethserver.org/cluster/remove-backup-input.json`
+
+* [remove-backup-repository input](./remove-backup-repository-input.md "Remove a backup repository and any related backup object") – `http://schema.nethserver.org/cluster/remove-backup-repository-input.json`
+
+* [remove-custom-zone input](./remove-custom-zone-input.md "Remove firewall configuration for the given zone") – `http://schema.nethserver.org/node/remove-custom-zone-input.json`
+
+* [remove-external-domain input](./remove-external-domain-input.md "Remove an external user domain and all its providers") – `http://schema.nethserver.org/cluster/remove-external-domain-input.json`
+
+* [remove-external-provider input](./remove-external-provider-input.md "Remove an external user domain provider") – `http://schema.nethserver.org/cluster/remove-external-provider-input.json`
+
+* [remove-favorite input](./remove-favorite-input.md "Input schema of the remove-favorite action") – `http://schema.nethserver.org/cluster/remove-favorite-input.json`
+
+* [remove-internal-domain input](./remove-internal-domain-input.md "Remove an internal user domain and all its providers") – `http://schema.nethserver.org/cluster/remove-internal-domain-input.json`
+
+* [remove-internal-provider input](./remove-internal-provider-input.md "Safely remove a user domain provider") – `http://schema.nethserver.org/cluster/remove-internal-provider-input.json`
+
+* [remove-module input](./remove-module-input.md "Remove a module from the running node, optionally erasing any disk data") – `http://schema.nethserver.org/node/remove-module-input.json`
+
+* [remove-module input](./remove-module-input-1.md "Remove a module from the cluster, optionally erasing any disk data") – `http://schema.nethserver.org/cluster/remove-module-input.json`
+
+* [remove-module output](./remove-module-output.md "Just an empty object, representing a successful response") – `http://schema.nethserver.org/node/remove-module-output.json`
+
+* [remove-module output](./remove-module-output-1.md "Just an empty object, representing a successful response") – `http://schema.nethserver.org/cluster/remove-module-output.json`
+
+* [remove-node input](./remove-node-input.md "Remove a node from the cluster") – `http://schema.nethserver.org/cluster/remove-node-input.json`
+
+* [remove-public-service input](./remove-public-service-input.md "Remove firewall configuration for the given public service") – `http://schema.nethserver.org/node/remove-public-service-input.json`
+
+* [remove-repository input](./remove-repository-input.md "Input schema of the remove-repository action") – `http://schema.nethserver.org/cluster/remove-repository-input.json`
+
+* [remove-repository output](./remove-repository-output.md "Output schema of the remove-repository action") – `http://schema.nethserver.org/cluster/remove-repository-output.json`
+
+* [remove-tun input](./remove-tun-input.md "Remove a tun interface") – `http://schema.nethserver.org/node/remove-tun-input.json`
+
+* [remove-user input](./remove-user-input.md "Remove a module from the cluster, optionally erasing any disk data") – `http://schema.nethserver.org/cluster/remove-user-input.json`
+
+* [remove-user output](./remove-user-output.md "No interesting information is returned") – `http://schema.nethserver.org/cluster/remove-user-output.json`
+
+* [restore-module input](./restore-module-input.md "Restore the module state from a remote backup") – `http://schema.nethserver.org/module/restore-module-input.json`
+
+* [restore-module input](./restore-module-input-1.md "Input schema of the restore-module action") – `http://schema.nethserver.org/cluster/restore-module-input.json`
+
+* [retrieve-cluster-backup input](./retrieve-cluster-backup-input.md "Retrieve cluster backup from base64 field or download it from a HTTP URL") – `http://schema.nethserver.org/cluster/retrieve-cluster-backup-input.json`
+
+* [retrieve-cluster-backup output](./rstrieve-cluster-backup-output.md "Return info from cluster backup") – `http://schema.nethserver.org/cluster/rstrieve-cluster-backup-output.json`
+
+* [revoke-actions input](./revoke-actions-input.md "Revoke permissions with matches") – `http://schema.nethserver.org/cluster/revoke-actions-input.json`
+
+* [revoke-actions output](./revoke-actions-output.md "Just an empty object, representing a successful response") – `http://schema.nethserver.org/cluster/revoke-actions-output.json`
+
+* [run-backup input](./run-backup-input.md "Run the given backup immediately") – `http://schema.nethserver.org/cluster/run-backup-input.json`
+
+* [run-backup input](./run-backup-input-1.md "Run the given backup immediately") – `http://schema.nethserver.org/agent/run-backup-input.json`
+
+* [set-external-provider-name input](./set-external-provider-name-input.md "Set the UI display name of an external provider instance") – `http://schema.nethserver.org/cluster/set-external-provider-name-input.json`
+
+* [set-fqdn input](./set-fqdn-input.md "Input schema of the set-fqdn action") – `http://schema.nethserver.org/node/set-fqdn-input.json`
+
+* [set-label input](./set-label-input.md "Assign a user-defined name to the module instance") – `http://schema.nethserver.org/agent/set-label-input.json`
+
+* [set-name input](./set-name-input.md "Assign a user-defined name to the node instance") – `http://schema.nethserver.org/node/set-name-input.json`
+
+* [set-name input](./set-name-input-1.md "Assign a user-defined name to the cluster") – `http://schema.nethserver.org/cluster/set-name-input.json`
+
+* [set-smarthost settings](./set-smarthost.md "Set the settings of an external smarthost provider") – `http://schema.nethserver.org/cluster/set-smarthost.json`
+
+* [set-subscription](./set-subscription.md "Set up support subscription") – `http://schema.nethserver.org/cluster/set-subscription.json`
+
+* [start-support-session output](./start-support-session-output.md "Start the support session and obtain the session ID") – `http://schema.nethserver.org/node/start-support-session-output.json`
+
+* [transfer-state input](./transfer-state-input.md "Transfer the module state to another module instance") – `http://schema.nethserver.org/module/transfer-state-input.json`
+
+* [update-core input](./update-core-input.md "Update the core module on the local node") – `http://schema.nethserver.org/node/update-core-input.json`
+
+* [update-core input](./update-core-input-1.md "Input schema of the update-core action") – `http://schema.nethserver.org/cluster/update-core-input.json`
+
+* [update-module input](./update-module-input.md "Input schema of the update-module action") – `http://schema.nethserver.org/cluster/update-module-input.json`
+
+* [update-module input](./update-module-input-1.md "Input schema of the basic update-module action") – `http://schema.nethserver.org/agent/update-module-input.json`
+
+* [update-routes input](./update-routes-input.md "Route traffic to the given IP addresses through the cluster VPN") – `http://schema.nethserver.org/cluster/update-routes-input.json`
+
+## Other Schemas
+
+### Objects
+
+* [A user descriptor](./list-domain-users-output-defs-a-user-descriptor.md "Basic description of a user: name and (person) display name") – `http://schema.nethserver.org/cluster/list-domain-users-output.json#/$defs/user`
+
+* [Azure blob storage protocol parameters](./add-backup-repository-input-defs-azure-blob-storage-protocol-parameters.md) – `http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/azure_parameters`
+
+* [B2 (Backblaze) protocol parameters](./add-backup-repository-input-defs-b2-backblaze-protocol-parameters.md) – `http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/b2_parameters`
+
+* [B2 (Backblaze) protocol parameters](./alter-backup-repository-input-defs-b2-backblaze-protocol-parameters.md) – `http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/b2_parameters`
+
+* [Backup object](./list-backups-output-defs-backup-object.md) – `http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/backup-item`
+
+* [Backup of a module instance](./list-backups-output-defs-backup-of-a-module-instance.md) – `http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/instance-item`
+
+* [Cluster-internal Rclone parameters](./add-backup-repository-input-defs-cluster-internal-rclone-parameters.md) – `http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/cluster_parameters`
+
+* [Cluster-internal Rclone parameters](./alter-backup-repository-input-defs-cluster-internal-rclone-parameters.md) – `http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/cluster_parameters`
+
+* [Connection parameters](./add-backup-repository-input-properties-connection-parameters.md) – `http://schema.nethserver.org/cluster/add-backup-repository-input.json#/properties/parameters`
+
+* [Connection parameters](./alter-backup-repository-input-properties-connection-parameters.md) – `http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/properties/parameters`
+
+* [Counters](./list-user-domains-output-defs-user-domain-properties-counters.md "The cached number of users and groups returned by their respective last API calls") – `http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/properties/counters`
+
+* [Environment backup](./restore-module-input-properties-environment-backup.md "Environment restored from the given backup") – `http://schema.nethserver.org/module/restore-module-input.json#/properties/environment`
+
+* [Filter clauses](./list-service-providers-input-properties-filter-clauses.md "Return entries matching all the given clauses") – `http://schema.nethserver.org/agent/list-service-providers-input.json#/properties/filter`
+
+* [Grant object](./cluster-definitions-grant-object.md "A grant object establishes a relation between a role and the cluster objects matching the \"on\" clause") – `http://schema.nethserver.org/cluster.json#/definitions/grant-object`
+
+* [Group descriptor](./list-domain-groups-output-defs-group-descriptor.md "Basic description of a group: name and description") – `http://schema.nethserver.org/cluster/list-domain-groups-output.json#/$defs/group`
+
+* [Group details](./get-domain-group-output-defs-group-details.md) – `http://schema.nethserver.org/cluster/get-domain-group-output.json#/$defs/group`
+
+* [Group details](./get-domain-user-output-defs-group-details.md) – `http://schema.nethserver.org/cluster/get-domain-user-output.json#/$defs/group`
+
+* [Initial module environment](./add-module-input-properties-initial-module-environment.md "Assign initial values to the module environment") – `http://schema.nethserver.org/node/add-module-input.json#/properties/environment`
+
+* [LDAP account provider](./list-user-domains-output-defs-ldap-account-provider.md "An LDAP account provider is a database of users and groups that can also be used as an authentication backend") – `http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/ldap-provider`
+
+* [LDAP domain properties](./add-external-domain-input-defs-ldap-domain-properties.md "Additional required properties of LDAP-based domains") – `http://schema.nethserver.org/cluster/add-external-domain-input.json#/$defs/additional-properties-of-ldap`
+
+* [LDAP domain properties](./list-user-domains-output-defs-ldap-domain-properties.md "Additional required properties of LDAP-based domains") – `http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/additional-properties-of-ldap`
+
+* [LDAP-specific subschemas](./add-external-domain-input-anyof-ldap-specific-subschemas.md) – `http://schema.nethserver.org/cluster/add-external-domain-input.json#/anyOf/1`
+
+* [Protocol property is ldap](./add-external-domain-input-anyof-0-protocol-property-is-ldap.md) – `http://schema.nethserver.org/cluster/add-external-domain-input.json#/anyOf/0/not`
+
+* [Protocol property is ldap](./add-external-provider-input-anyof-0-protocol-property-is-ldap.md) – `http://schema.nethserver.org/cluster/add-external-provider-input.json#/anyOf/0/not`
+
+* [Protocol property is ldap](./list-user-domains-output-defs-user-domain-anyof-0-protocol-property-is-ldap.md) – `http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/anyOf/0/not`
+
+* [Protocol property is ldap](./remove-external-provider-input-anyof-0-protocol-property-is-ldap.md) – `http://schema.nethserver.org/cluster/remove-external-provider-input.json#/anyOf/0/not`
+
+* [Protocol property is ldap](./set-external-provider-name-input-anyof-0-protocol-property-is-ldap.md) – `http://schema.nethserver.org/cluster/set-external-provider-name-input.json#/anyOf/0/not`
+
+* [S3 (Amazon AWS) protocol parameters](./add-backup-repository-input-defs-s3-amazon-aws-protocol-parameters.md) – `http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/s3_parameters`
+
+* [S3 (Amazon AWS) protocol parameters](./alter-backup-repository-input-defs-s3-amazon-aws-protocol-parameters.md) – `http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/s3_parameters`
+
+* [SMB Rclone parameters](./add-backup-repository-input-defs-smb-rclone-parameters.md) – `http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/smb_parameters`
+
+* [SMB Rclone parameters](./alter-backup-repository-input-defs-smb-rclone-parameters.md) – `http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/smb_parameters`
+
+* [Schedule expression hint for UI](./add-backup-input-properties-schedule-expression-hint-for-ui.md "Store arbitrary object to ease parsing of schedule value") – `http://schema.nethserver.org/cluster/add-backup-input.json#/properties/schedule_hint`
+
+* [Schedule expression hint for UI](./alter-backup-input-properties-schedule-expression-hint-for-ui.md "Store arbitrary object to ease parsing of schedule value") – `http://schema.nethserver.org/cluster/alter-backup-input.json#/properties/schedule_hint`
+
+* [Schedule expression hint for UI](./list-backups-output-defs-backup-object-properties-schedule-expression-hint-for-ui.md "Store arbitrary object to ease parsing of schedule value") – `http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/backup-item/properties/schedule_hint`
+
+* [Service discovery information](./list-service-providers-output-service-discovery-information.md) – `http://schema.nethserver.org/agent/list-service-providers-output.json#/itmes`
+
+* [TCP service endpoint](./add-external-domain-input-defs-tcp-service-endpoint.md "Initial TCP backend endpoint configuration") – `http://schema.nethserver.org/cluster/add-external-domain-input.json#/$defs/tcp-service-endpoint`
+
+* [TCP service endpoint](./add-external-provider-input-defs-tcp-service-endpoint.md "Initial TCP backend endpoint configuration") – `http://schema.nethserver.org/cluster/add-external-provider-input.json#/$defs/tcp-service-endpoint`
+
+* [TCP service endpoint](./remove-external-provider-input-defs-tcp-service-endpoint.md "Initial TCP backend endpoint configuration") – `http://schema.nethserver.org/cluster/remove-external-provider-input.json#/$defs/tcp-service-endpoint`
+
+* [TCP service endpoint](./set-external-provider-name-input-defs-tcp-service-endpoint.md "Initial TCP backend endpoint configuration") – `http://schema.nethserver.org/cluster/set-external-provider-name-input.json#/$defs/tcp-service-endpoint`
+
+* [Unconfigured domain](./list-user-domains-output-defs-unconfigured-domain.md "An account provider instance, installed as the first instance of a new domain") – `http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/unconfigured-domain`
+
+* [Unconfigured module instance](./list-backups-output-defs-unconfigured-module-instance.md "Instance with no backup configured") – `http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/uinstance-item`
+
+* [Untitled object in Cluster library](./cluster-definitions-grant-assertion.md) – `http://schema.nethserver.org/cluster.json#/definitions/grant-assertion`
+
+* [Untitled object in Get module status](./get-status-output-properties-services-items.md) – `http://schema.nethserver.org/agent/get-status-output.json#/properties/services/items`
+
+* [Untitled object in Get module status](./get-status-output-properties-images-items.md) – `http://schema.nethserver.org/agent/get-status-output.json#/properties/images/items`
+
+* [Untitled object in Get module status](./get-status-output-properties-volumes-items.md) – `http://schema.nethserver.org/agent/get-status-output.json#/properties/volumes/items`
+
+* [Untitled object in List loki instances](./list-loki-instances-output-properties-instances-items.md) – `http://schema.nethserver.org/cluster/list-loki-instances-output.json#/properties/instances/items`
+
+* [Untitled object in Output for list-installed-modules](./list-installed-modules-output-patternproperties--items.md) – `http://schema.nethserver.org/cluster/list-installed-modules-output.json#/patternProperties/.*/items`
+
+* [Untitled object in get-cluster-status output](./get-cluster-status-output-properties-nodes-items.md) – `http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/nodes/items`
+
+* [Untitled object in get-cluster-status output](./get-cluster-status-output-properties-nodes-items-properties-vpn.md "WireGuard VPN details") – `http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/nodes/items/properties/vpn`
+
+* [Untitled object in get-defaults output](./get-defaults-output-properties-vpn.md "WireGuard VPN defaults") – `http://schema.nethserver.org/cluster/get-defaults-output.json#/properties/vpn`
+
+* [Untitled object in get-domain-group output](./get-domain-group-output-defs-user.md) – `http://schema.nethserver.org/cluster/get-domain-group-output.json#/$defs/user`
+
+* [Untitled object in get-domain-user output](./get-domain-user-output-defs-user.md) – `http://schema.nethserver.org/cluster/get-domain-user-output.json#/$defs/user`
+
+* [Untitled object in get-node-status output](./get-node-status-output-properties-load.md "Average load") – `http://schema.nethserver.org/node/get-node-status-output.json#/properties/load`
+
+* [Untitled object in get-node-status output](./get-node-status-output-properties-cpu.md "Average load") – `http://schema.nethserver.org/node/get-node-status-output.json#/properties/cpu`
+
+* [Untitled object in get-node-status output](./get-node-status-output-properties-cpu-properties-info-items.md) – `http://schema.nethserver.org/node/get-node-status-output.json#/properties/cpu/properties/info/items`
+
+* [Untitled object in get-node-status output](./get-node-status-output-properties-memory.md "Memory statistics") – `http://schema.nethserver.org/node/get-node-status-output.json#/properties/memory`
+
+* [Untitled object in get-node-status output](./get-node-status-output-properties-swap.md "SWAP statistics") – `http://schema.nethserver.org/node/get-node-status-output.json#/properties/swap`
+
+* [Untitled object in get-node-status output](./get-node-status-output-properties-disks-items.md) – `http://schema.nethserver.org/node/get-node-status-output.json#/properties/disks/items`
+
+* [Untitled object in list-cluster-backup-repositories output](./list-cluster-backup-repositories-output-properties-endpoints-items.md) – `http://schema.nethserver.org/cluster/list-cluster-backup-repositories-output.json#/properties/endpoints/items`
+
+* [Untitled object in list-core-modules output](./list-core-modules-output-items.md) – `http://schema.nethserver.org/cluster/list-core-modules-output.json#/items`
+
+* [Untitled object in list-core-modules output](./list-core-modules-output-items-properties-instances-items.md) – `http://schema.nethserver.org/cluster/list-core-modules-output.json#/items/properties/instances/items`
+
+* [Untitled object in list-favorites output](./list-favorites-output-items.md) – `http://schema.nethserver.org/cluster/list-favorites-output.json#/items`
+
+* [Untitled object in list-modules output](./list-modules-output-items.md) – `http://schema.nethserver.org/cluster/list-modules-output.json#/items`
+
+* [Untitled object in list-modules output](./list-modules-output-items-properties-description.md "A map of language codes (eg") – `http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/description`
+
+* [Untitled object in list-modules output](./list-modules-output-items-properties-authors-items.md) – `http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/authors/items`
+
+* [Untitled object in list-modules output](./list-modules-output-items-properties-docs.md) – `http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/docs`
+
+* [Untitled object in list-modules output](./list-modules-output-items-properties-versions-items.md) – `http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/versions/items`
+
+* [Untitled object in list-modules output](./list-modules-output-items-properties-versions-items-properties-labels.md "Image label, see official specification https://github") – `http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/versions/items/properties/labels`
+
+* [Untitled object in list-modules output](./list-modules-output-items-updates-items.md) – `http://schema.nethserver.org/cluster/list-modules-output.json#/items/updates/items`
+
+* [Untitled object in list-modules output](./list-modules-output-items-installed-items.md) – `http://schema.nethserver.org/cluster/list-modules-output.json#/items/installed/items`
+
+* [Untitled object in list-repositories output](./list-repositories-output-items.md) – `http://schema.nethserver.org/cluster/list-repositories-output.json#/items`
+
+* [Untitled object in list-shortcuts output](./list-shortcuts-output-items.md) – `http://schema.nethserver.org/cluster/list-shortcuts-output.json#/items`
+
+* [Untitled object in list-updates output](./list-updates-output-items.md) – `http://schema.nethserver.org/cluster/list-updates-output.json#/items`
+
+* [Untitled object in list-users output](./list-users-output-items.md) – `http://schema.nethserver.org/cluster/list-users-output.json#/items`
+
+* [Untitled object in update-routes input](./update-routes-input-definitions-changelist-items.md) – `http://schema.nethserver.org/cluster/update-routes-input.json#/definitions/changeList/items`
+
+* [User attributes](./cluster-definitions-user-attributes.md "Attributes of a User") – `http://schema.nethserver.org/cluster.json#/definitions/user-attributes`
+
+* [User domain](./list-user-domains-output-defs-user-domain.md "Users (and also user groups) can be uniquely identified inside a domain") – `http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain`
+
+### Arrays
+
+* [Account providers](./list-user-domains-output-defs-user-domain-properties-account-providers.md "Backend system and replicas providing the services of the user domain") – `http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/properties/providers`
+
+* [Backups](./list-backups-output-properties-backups.md "List of configured backup objects") – `http://schema.nethserver.org/cluster/list-backups-output.json#/properties/backups`
+
+* [Firewall ports configuration](./add-custom-zone-input-properties-firewall-ports-configuration.md) – `http://schema.nethserver.org/node/add-custom-zone-input.json#/properties/ports`
+
+* [Firewall ports configuration](./add-public-service-input-properties-firewall-ports-configuration.md) – `http://schema.nethserver.org/node/add-public-service-input.json#/properties/ports`
+
+* [Firewall rich rules](./add-custom-zone-input-properties-firewall-rich-rules.md) – `http://schema.nethserver.org/node/add-custom-zone-input.json#/properties/rules`
+
+* [Grant assertions list](./add-user-input-properties-grant-assertions-list.md "A list of initial roles on the matching objects") – `http://schema.nethserver.org/cluster/add-user-input.json#/properties/grant`
+
+* [Grant assertions list](./alter-user-input-properties-grant-assertions-list.md "A list of initial roles on the matching objects") – `http://schema.nethserver.org/cluster/alter-user-input.json#/properties/grant`
+
+* [Group members](./get-domain-group-output-defs-group-details-properties-group-members.md) – `http://schema.nethserver.org/cluster/get-domain-group-output.json#/$defs/group/properties/users`
+
+* [Group members](./list-domain-groups-output-defs-group-descriptor-properties-group-members.md) – `http://schema.nethserver.org/cluster/list-domain-groups-output.json#/$defs/group/properties/users`
+
+* [Initial volume set where the module state is stored](./clone-module-input-properties-initial-volume-set-where-the-module-state-is-stored.md) – `http://schema.nethserver.org/module/clone-module-input.json#/properties/volumes`
+
+* [Initial volume set where the module state is stored](./import-module-input-properties-initial-volume-set-where-the-module-state-is-stored.md) – `http://schema.nethserver.org/module/import-module-input.json#/properties/volumes`
+
+* [Initial volume set where the module state is stored](./import-module-input-1-properties-initial-volume-set-where-the-module-state-is-stored.md) – `http://schema.nethserver.org/cluster/import-module-input.json#/properties/volumes`
+
+* [List of groups the user belongs to](./get-domain-user-output-defs-user-properties-list-of-groups-the-user-belongs-to.md) – `http://schema.nethserver.org/cluster/get-domain-user-output.json#/$defs/user/properties/groups`
+
+* [Module instances](./add-backup-input-properties-module-instances.md "Identifiers of module instances included in the backup") – `http://schema.nethserver.org/cluster/add-backup-input.json#/properties/instances`
+
+* [Module instances](./alter-backup-input-properties-module-instances.md "Identifiers of module instances included in the backup") – `http://schema.nethserver.org/cluster/alter-backup-input.json#/properties/instances`
+
+* [Module instances](./list-backups-output-defs-backup-object-properties-module-instances.md "Identifiers of module instances included in the backup") – `http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/backup-item/properties/instances`
+
+* [Revoke assertions list](./alter-user-input-properties-revoke-assertions-list.md "A list of revoke roles on the matching objects") – `http://schema.nethserver.org/cluster/alter-user-input.json#/properties/revoke`
+
+* [Rsyncd service credentials](./clone-module-input-properties-rsyncd-service-credentials.md "An array with two elements: username, password") – `http://schema.nethserver.org/module/clone-module-input.json#/properties/credentials`
+
+* [Rsyncd service credentials](./import-module-input-properties-rsyncd-service-credentials.md "An array with two elements: username, password") – `http://schema.nethserver.org/module/import-module-input.json#/properties/credentials`
+
+* [Rsyncd service credentials](./transfer-state-input-properties-rsyncd-service-credentials.md "An array with two elements: username, password") – `http://schema.nethserver.org/module/transfer-state-input.json#/properties/credentials`
+
+* [Unconfigured module instances](./list-backups-output-properties-unconfigured-module-instances.md "List of module instances that are not included in any backup") – `http://schema.nethserver.org/cluster/list-backups-output.json#/properties/unconfigured_instances`
+
+* [Untitled array in Get module status](./get-status-output-properties-services.md "A list of systemd unit services") – `http://schema.nethserver.org/agent/get-status-output.json#/properties/services`
+
+* [Untitled array in Get module status](./get-status-output-properties-images.md "A list of podman images") – `http://schema.nethserver.org/agent/get-status-output.json#/properties/images`
+
+* [Untitled array in Get module status](./get-status-output-properties-volumes.md "A list of podman volumes") – `http://schema.nethserver.org/agent/get-status-output.json#/properties/volumes`
+
+* [Untitled array in List loki instances](./list-loki-instances-output-properties-instances.md) – `http://schema.nethserver.org/cluster/list-loki-instances-output.json#/properties/instances`
+
+* [Untitled array in Output for list-installed-modules](./list-installed-modules-output-patternproperties-.md) – `http://schema.nethserver.org/cluster/list-installed-modules-output.json#/patternProperties/.*`
+
+* [Untitled array in Output for list-installed-modules](./list-installed-modules-output-patternproperties--items-properties-flags.md "List of flags from org") – `http://schema.nethserver.org/cluster/list-installed-modules-output.json#/patternProperties/.*/items/properties/flags`
+
+* [Untitled array in add-node input](./add-node-input-properties-flags.md "List of node flags") – `http://schema.nethserver.org/cluster/add-node-input.json#/properties/flags`
+
+* [Untitled array in bind-user-domains-input](./bind-user-domains-input-properties-domains.md "One or more domains to bind with the module calling this action") – `http://schema.nethserver.org/cluster/bind-user-domains-input.json#/properties/domains`
+
+* [Untitled array in create-module input](./create-module-input-properties-images.md) – `http://schema.nethserver.org/agent/create-module-input.json#/properties/images`
+
+* [Untitled array in get-cluster-status output](./get-cluster-status-output-properties-nodes.md) – `http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/nodes`
+
+* [Untitled array in get-node-status output](./get-node-status-output-properties-cpu-properties-info.md "CPU details") – `http://schema.nethserver.org/node/get-node-status-output.json#/properties/cpu/properties/info`
+
+* [Untitled array in get-node-status output](./get-node-status-output-properties-disks.md "Storage information by partition") – `http://schema.nethserver.org/node/get-node-status-output.json#/properties/disks`
+
+* [Untitled array in list output](./list-output-properties-objects.md) – `http://schema.nethserver.org/example/list-output.json#/properties/objects`
+
+* [Untitled array in list-cluster-backup-repositories output](./list-cluster-backup-repositories-output-properties-endpoints.md) – `http://schema.nethserver.org/cluster/list-cluster-backup-repositories-output.json#/properties/endpoints`
+
+* [Untitled array in list-core-modules output](./list-core-modules-output-items-properties-instances.md) – `http://schema.nethserver.org/cluster/list-core-modules-output.json#/items/properties/instances`
+
+* [Untitled array in list-domain-groups output](./list-domain-groups-output-properties-groups.md) – `http://schema.nethserver.org/cluster/list-domain-groups-output.json#/properties/groups`
+
+* [Untitled array in list-domain-users output](./list-domain-users-output-properties-users.md) – `http://schema.nethserver.org/cluster/list-domain-users-output.json#/properties/users`
+
+* [Untitled array in list-modules output](./list-modules-output-items-properties-categories.md) – `http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/categories`
+
+* [Untitled array in list-modules output](./list-modules-output-items-properties-authors.md) – `http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/authors`
+
+* [Untitled array in list-modules output](./list-modules-output-items-properties-versions.md) – `http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/versions`
+
+* [Untitled array in list-modules output](./list-modules-output-items-updates.md) – `http://schema.nethserver.org/cluster/list-modules-output.json#/items/updates`
+
+* [Untitled array in list-modules output](./list-modules-output-items-installed.md) – `http://schema.nethserver.org/cluster/list-modules-output.json#/items/installed`
+
+* [Untitled array in list-shortcuts output](./list-shortcuts-output-items-parameters-tags.md) – `http://schema.nethserver.org/cluster/list-shortcuts-output.json#/items/parameters/tags`
+
+* [Untitled array in list-user-domains output](./list-user-domains-output-properties-unconfigured_domains.md) – `http://schema.nethserver.org/cluster/list-user-domains-output.json#/properties/unconfigured_domains`
+
+* [Untitled array in list-user-domains output](./list-user-domains-output-properties-domains.md) – `http://schema.nethserver.org/cluster/list-user-domains-output.json#/properties/domains`
+
+* [Untitled array in list-user-domains output](./list-user-domains-output-defs-user-domain-properties-hidden_users.md "List of users that are not visible from UI and from applications") – `http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/properties/hidden_users`
+
+* [Untitled array in list-user-domains output](./list-user-domains-output-defs-user-domain-properties-hidden_groups.md "List of groups that are not visible from UI and from applications") – `http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/properties/hidden_groups`
+
+* [Untitled array in update-core input](./update-core-input-1-properties-nodes.md "Identifiers of nodes where the selected image is installed") – `http://schema.nethserver.org/cluster/update-core-input.json#/properties/nodes`
+
+* [Untitled array in update-module input](./update-module-input-properties-instances.md "Instance identifiers where the selected image is installed") – `http://schema.nethserver.org/cluster/update-module-input.json#/properties/instances`
+
+* [Untitled array in update-routes input](./update-routes-input-definitions-changelist.md) – `http://schema.nethserver.org/cluster/update-routes-input.json#/definitions/changeList`
+
+## Version Note
+
+The schemas linked above follow the JSON Schema Spec version: `http://json-schema.org/draft-07/schema#`
diff --git a/core/add-backup-input-properties-backup-name.md b/core/add-backup-input-properties-backup-name.md
new file mode 100644
index 000000000..6e7caab95
--- /dev/null
+++ b/core/add-backup-input-properties-backup-name.md
@@ -0,0 +1,15 @@
+# Backup name Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-input.json#/properties/name
+```
+
+If set to empty, a default name is set (e.g. `Backup 3`)
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-backup-input.json\*](cluster/add-backup-input.json "open original schema") |
+
+## name Type
+
+`string` ([Backup name](add-backup-input-properties-backup-name.md))
diff --git a/core/add-backup-input-properties-backup-retention.md b/core/add-backup-input-properties-backup-retention.md
new file mode 100644
index 000000000..58df59dba
--- /dev/null
+++ b/core/add-backup-input-properties-backup-retention.md
@@ -0,0 +1,19 @@
+# Backup retention Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-input.json#/properties/retention
+```
+
+Number of backup snapshots to store before automatic deletion
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-backup-input.json\*](cluster/add-backup-input.json "open original schema") |
+
+## retention Type
+
+`integer` ([Backup retention](add-backup-input-properties-backup-retention.md))
+
+## retention Constraints
+
+**minimum**: the value of this number must greater than or equal to: `1`
diff --git a/core/add-backup-input-properties-enableddisabled-status-if-false-the-backup-is-stopped.md b/core/add-backup-input-properties-enableddisabled-status-if-false-the-backup-is-stopped.md
new file mode 100644
index 000000000..3be7c2a7a
--- /dev/null
+++ b/core/add-backup-input-properties-enableddisabled-status-if-false-the-backup-is-stopped.md
@@ -0,0 +1,15 @@
+# Enabled/disabled status. If \`false\` the backup is stopped. Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-input.json#/properties/enabled
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-backup-input.json\*](cluster/add-backup-input.json "open original schema") |
+
+## enabled Type
+
+`boolean` ([Enabled/disabled status. If \`false\` the backup is stopped.](add-backup-input-properties-enableddisabled-status-if-false-the-backup-is-stopped.md))
diff --git a/core/add-backup-input-properties-module-instances-items.md b/core/add-backup-input-properties-module-instances-items.md
new file mode 100644
index 000000000..d01cb7654
--- /dev/null
+++ b/core/add-backup-input-properties-module-instances-items.md
@@ -0,0 +1,19 @@
+# Untitled string in add-backup input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-input.json#/properties/instances/items
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-backup-input.json\*](cluster/add-backup-input.json "open original schema") |
+
+## items Type
+
+`string`
+
+## items Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/add-backup-input-properties-module-instances.md b/core/add-backup-input-properties-module-instances.md
new file mode 100644
index 000000000..ec963978c
--- /dev/null
+++ b/core/add-backup-input-properties-module-instances.md
@@ -0,0 +1,15 @@
+# Module instances Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-input.json#/properties/instances
+```
+
+Identifiers of module instances included in the backup
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-backup-input.json\*](cluster/add-backup-input.json "open original schema") |
+
+## instances Type
+
+`string[]`
diff --git a/core/add-backup-input-properties-repository-uuid-reference.md b/core/add-backup-input-properties-repository-uuid-reference.md
new file mode 100644
index 000000000..2d99b3a83
--- /dev/null
+++ b/core/add-backup-input-properties-repository-uuid-reference.md
@@ -0,0 +1,25 @@
+# Repository UUID reference Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-input.json#/properties/repository
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-backup-input.json\*](cluster/add-backup-input.json "open original schema") |
+
+## repository Type
+
+`string` ([Repository UUID reference](add-backup-input-properties-repository-uuid-reference.md))
+
+## repository Constraints
+
+**pattern**: the string must match the following regular expression:
+
+```regexp
+^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$
+```
+
+[try pattern](https://regexr.com/?expression=%5E%5B0-9a-f%5D%7B8%7D-%5B0-9a-f%5D%7B4%7D-%5B0-9a-f%5D%7B4%7D-%5B0-9a-f%5D%7B4%7D-%5B0-9a-f%5D%7B12%7D%24 "try regular expression with regexr.com")
diff --git a/core/add-backup-input-properties-schedule-expression-hint-for-ui.md b/core/add-backup-input-properties-schedule-expression-hint-for-ui.md
new file mode 100644
index 000000000..df79f7012
--- /dev/null
+++ b/core/add-backup-input-properties-schedule-expression-hint-for-ui.md
@@ -0,0 +1,15 @@
+# Schedule expression hint for UI Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-input.json#/properties/schedule_hint
+```
+
+Store arbitrary object to ease parsing of `schedule` value
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-backup-input.json\*](cluster/add-backup-input.json "open original schema") |
+
+## schedule\_hint Type
+
+`object` ([Schedule expression hint for UI](add-backup-input-properties-schedule-expression-hint-for-ui.md))
diff --git a/core/add-backup-input-properties-time-schedule-expression.md b/core/add-backup-input-properties-time-schedule-expression.md
new file mode 100644
index 000000000..0ce7df8e6
--- /dev/null
+++ b/core/add-backup-input-properties-time-schedule-expression.md
@@ -0,0 +1,21 @@
+# Time schedule expression Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-input.json#/properties/schedule
+```
+
+The string format must be compatible with Calendar Events, described in `systemd.timer` man page
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-backup-input.json\*](cluster/add-backup-input.json "open original schema") |
+
+## schedule Type
+
+`string` ([Time schedule expression](add-backup-input-properties-time-schedule-expression.md))
+
+## schedule Constraints
+
+**maximum length**: the maximum number of characters for this string is: `64`
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/add-backup-input.json b/core/add-backup-input.json
new file mode 100644
index 000000000..c1e3023e0
--- /dev/null
+++ b/core/add-backup-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"add-backup input","$id":"http://schema.nethserver.org/cluster/add-backup-input.json","description":"Configure a new backup instance","examples":[{"name":"BB daily","repository":"6a2a6208-7d4f-5915-9419-e4f1faaa1c76","schedule":"daily","schedule_hint":{},"retention":"7d","instances":["dokuwiki1","nextcloud1"],"enabled":true}],"type":"object","required":["name","instances","repository","schedule","retention","enabled"],"properties":{"instances":{"title":"Module instances","description":"Identifiers of module instances included in the backup","type":"array","items":{"type":"string","minLength":1}},"repository":{"title":"Repository UUID reference","type":"string","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"},"schedule":{"title":"Time schedule expression","description":"The string format must be compatible with Calendar Events, described in `systemd.timer` man page","type":"string","minLength":1,"maxLength":64},"schedule_hint":{"title":"Schedule expression hint for UI","description":"Store arbitrary object to ease parsing of `schedule` value","type":"object"},"retention":{"title":"Backup retention","description":"Number of backup snapshots to store before automatic deletion","type":"integer","minimum":1},"name":{"title":"Backup name","description":"If set to empty, a default name is set (e.g. `Backup 3`)","type":"string"},"enabled":{"type":"boolean","title":"Enabled/disabled status. If `false` the backup is stopped."}}}
diff --git a/core/add-backup-input.md b/core/add-backup-input.md
new file mode 100644
index 000000000..c9f44d1f3
--- /dev/null
+++ b/core/add-backup-input.md
@@ -0,0 +1,190 @@
+# add-backup input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-input.json
+```
+
+Configure a new backup instance
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [add-backup-input.json](cluster/add-backup-input.json "open original schema") |
+
+## add-backup input Type
+
+`object` ([add-backup input](add-backup-input.md))
+
+## add-backup input Examples
+
+```json
+{
+ "name": "BB daily",
+ "repository": "6a2a6208-7d4f-5915-9419-e4f1faaa1c76",
+ "schedule": "daily",
+ "schedule_hint": {},
+ "retention": "7d",
+ "instances": [
+ "dokuwiki1",
+ "nextcloud1"
+ ],
+ "enabled": true
+}
+```
+
+# add-backup input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------------- | :-------- | :------- | :------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [instances](#instances) | `array` | Required | cannot be null | [add-backup input](add-backup-input-properties-module-instances.md "http://schema.nethserver.org/cluster/add-backup-input.json#/properties/instances") |
+| [repository](#repository) | `string` | Required | cannot be null | [add-backup input](add-backup-input-properties-repository-uuid-reference.md "http://schema.nethserver.org/cluster/add-backup-input.json#/properties/repository") |
+| [schedule](#schedule) | `string` | Required | cannot be null | [add-backup input](add-backup-input-properties-time-schedule-expression.md "http://schema.nethserver.org/cluster/add-backup-input.json#/properties/schedule") |
+| [schedule\_hint](#schedule_hint) | `object` | Optional | cannot be null | [add-backup input](add-backup-input-properties-schedule-expression-hint-for-ui.md "http://schema.nethserver.org/cluster/add-backup-input.json#/properties/schedule_hint") |
+| [retention](#retention) | `integer` | Required | cannot be null | [add-backup input](add-backup-input-properties-backup-retention.md "http://schema.nethserver.org/cluster/add-backup-input.json#/properties/retention") |
+| [name](#name) | `string` | Required | cannot be null | [add-backup input](add-backup-input-properties-backup-name.md "http://schema.nethserver.org/cluster/add-backup-input.json#/properties/name") |
+| [enabled](#enabled) | `boolean` | Required | cannot be null | [add-backup input](add-backup-input-properties-enableddisabled-status-if-false-the-backup-is-stopped.md "http://schema.nethserver.org/cluster/add-backup-input.json#/properties/enabled") |
+
+## instances
+
+Identifiers of module instances included in the backup
+
+`instances`
+
+* is required
+
+* Type: `string[]`
+
+* cannot be null
+
+* defined in: [add-backup input](add-backup-input-properties-module-instances.md "http://schema.nethserver.org/cluster/add-backup-input.json#/properties/instances")
+
+### instances Type
+
+`string[]`
+
+## repository
+
+
+
+`repository`
+
+* is required
+
+* Type: `string` ([Repository UUID reference](add-backup-input-properties-repository-uuid-reference.md))
+
+* cannot be null
+
+* defined in: [add-backup input](add-backup-input-properties-repository-uuid-reference.md "http://schema.nethserver.org/cluster/add-backup-input.json#/properties/repository")
+
+### repository Type
+
+`string` ([Repository UUID reference](add-backup-input-properties-repository-uuid-reference.md))
+
+### repository Constraints
+
+**pattern**: the string must match the following regular expression:
+
+```regexp
+^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$
+```
+
+[try pattern](https://regexr.com/?expression=%5E%5B0-9a-f%5D%7B8%7D-%5B0-9a-f%5D%7B4%7D-%5B0-9a-f%5D%7B4%7D-%5B0-9a-f%5D%7B4%7D-%5B0-9a-f%5D%7B12%7D%24 "try regular expression with regexr.com")
+
+## schedule
+
+The string format must be compatible with Calendar Events, described in `systemd.timer` man page
+
+`schedule`
+
+* is required
+
+* Type: `string` ([Time schedule expression](add-backup-input-properties-time-schedule-expression.md))
+
+* cannot be null
+
+* defined in: [add-backup input](add-backup-input-properties-time-schedule-expression.md "http://schema.nethserver.org/cluster/add-backup-input.json#/properties/schedule")
+
+### schedule Type
+
+`string` ([Time schedule expression](add-backup-input-properties-time-schedule-expression.md))
+
+### schedule Constraints
+
+**maximum length**: the maximum number of characters for this string is: `64`
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## schedule\_hint
+
+Store arbitrary object to ease parsing of `schedule` value
+
+`schedule_hint`
+
+* is optional
+
+* Type: `object` ([Schedule expression hint for UI](add-backup-input-properties-schedule-expression-hint-for-ui.md))
+
+* cannot be null
+
+* defined in: [add-backup input](add-backup-input-properties-schedule-expression-hint-for-ui.md "http://schema.nethserver.org/cluster/add-backup-input.json#/properties/schedule_hint")
+
+### schedule\_hint Type
+
+`object` ([Schedule expression hint for UI](add-backup-input-properties-schedule-expression-hint-for-ui.md))
+
+## retention
+
+Number of backup snapshots to store before automatic deletion
+
+`retention`
+
+* is required
+
+* Type: `integer` ([Backup retention](add-backup-input-properties-backup-retention.md))
+
+* cannot be null
+
+* defined in: [add-backup input](add-backup-input-properties-backup-retention.md "http://schema.nethserver.org/cluster/add-backup-input.json#/properties/retention")
+
+### retention Type
+
+`integer` ([Backup retention](add-backup-input-properties-backup-retention.md))
+
+### retention Constraints
+
+**minimum**: the value of this number must greater than or equal to: `1`
+
+## name
+
+If set to empty, a default name is set (e.g. `Backup 3`)
+
+`name`
+
+* is required
+
+* Type: `string` ([Backup name](add-backup-input-properties-backup-name.md))
+
+* cannot be null
+
+* defined in: [add-backup input](add-backup-input-properties-backup-name.md "http://schema.nethserver.org/cluster/add-backup-input.json#/properties/name")
+
+### name Type
+
+`string` ([Backup name](add-backup-input-properties-backup-name.md))
+
+## enabled
+
+
+
+`enabled`
+
+* is required
+
+* Type: `boolean` ([Enabled/disabled status. If \`false\` the backup is stopped.](add-backup-input-properties-enableddisabled-status-if-false-the-backup-is-stopped.md))
+
+* cannot be null
+
+* defined in: [add-backup input](add-backup-input-properties-enableddisabled-status-if-false-the-backup-is-stopped.md "http://schema.nethserver.org/cluster/add-backup-input.json#/properties/enabled")
+
+### enabled Type
+
+`boolean` ([Enabled/disabled status. If \`false\` the backup is stopped.](add-backup-input-properties-enableddisabled-status-if-false-the-backup-is-stopped.md))
diff --git a/core/add-backup-output.json b/core/add-backup-output.json
new file mode 100644
index 000000000..7db1be0ad
--- /dev/null
+++ b/core/add-backup-output.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"add-backup output","$id":"http://schema.nethserver.org/cluster/add-backup-output.json","description":"The add-backup action returns the backup ID of the added item","examples":[1],"type":"integer","minimum":1}
diff --git a/core/add-backup-output.md b/core/add-backup-output.md
new file mode 100644
index 000000000..4ba724cee
--- /dev/null
+++ b/core/add-backup-output.md
@@ -0,0 +1,25 @@
+# add-backup output Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-output.json
+```
+
+The add-backup action returns the backup ID of the added item
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-backup-output.json](cluster/add-backup-output.json "open original schema") |
+
+## add-backup output Type
+
+`integer` ([add-backup output](add-backup-output.md))
+
+## add-backup output Constraints
+
+**minimum**: the value of this number must greater than or equal to: `1`
+
+## add-backup output Examples
+
+```json
+1
+```
diff --git a/core/add-backup-repository-input-anyof-0-allof-backblaze-schema-properties-backblaze-provider.md b/core/add-backup-repository-input-anyof-0-allof-backblaze-schema-properties-backblaze-provider.md
new file mode 100644
index 000000000..f1951c725
--- /dev/null
+++ b/core/add-backup-repository-input-anyof-0-allof-backblaze-schema-properties-backblaze-provider.md
@@ -0,0 +1,23 @@
+# BackBlaze provider Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-repository-input.json#/anyOf/0/allOf/0/properties/provider
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-backup-repository-input.json\*](cluster/add-backup-repository-input.json "open original schema") |
+
+## provider Type
+
+unknown ([BackBlaze provider](add-backup-repository-input-anyof-0-allof-backblaze-schema-properties-backblaze-provider.md))
+
+## provider Constraints
+
+**constant**: the value of this property must be equal to:
+
+```json
+"backblaze"
+```
diff --git a/core/add-backup-repository-input-anyof-0-allof-backblaze-schema-properties.md b/core/add-backup-repository-input-anyof-0-allof-backblaze-schema-properties.md
new file mode 100644
index 000000000..204b0d170
--- /dev/null
+++ b/core/add-backup-repository-input-anyof-0-allof-backblaze-schema-properties.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in add-backup-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-repository-input.json#/anyOf/0/allOf/0/properties
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-backup-repository-input.json\*](cluster/add-backup-repository-input.json "open original schema") |
+
+## properties Type
+
+unknown
diff --git a/core/add-backup-repository-input-anyof-0-allof-backblaze-schema.md b/core/add-backup-repository-input-anyof-0-allof-backblaze-schema.md
new file mode 100644
index 000000000..0ebe231f8
--- /dev/null
+++ b/core/add-backup-repository-input-anyof-0-allof-backblaze-schema.md
@@ -0,0 +1,66 @@
+# BackBlaze schema Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-repository-input.json#/anyOf/0/allOf/0
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [add-backup-repository-input.json\*](cluster/add-backup-repository-input.json "open original schema") |
+
+## 0 Type
+
+unknown ([BackBlaze schema](add-backup-repository-input-anyof-0-allof-backblaze-schema.md))
+
+# 0 Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------ | :------------ | :------- | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [provider](#provider) | Not specified | Optional | cannot be null | [add-backup-repository input](add-backup-repository-input-anyof-0-allof-backblaze-schema-properties-backblaze-provider.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/anyOf/0/allOf/0/properties/provider") |
+| [parameters](#parameters) | `object` | Optional | cannot be null | [add-backup-repository input](add-backup-repository-input-defs-b2-backblaze-protocol-parameters.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/anyOf/0/allOf/0/properties/parameters") |
+
+## provider
+
+
+
+`provider`
+
+* is optional
+
+* Type: unknown ([BackBlaze provider](add-backup-repository-input-anyof-0-allof-backblaze-schema-properties-backblaze-provider.md))
+
+* cannot be null
+
+* defined in: [add-backup-repository input](add-backup-repository-input-anyof-0-allof-backblaze-schema-properties-backblaze-provider.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/anyOf/0/allOf/0/properties/provider")
+
+### provider Type
+
+unknown ([BackBlaze provider](add-backup-repository-input-anyof-0-allof-backblaze-schema-properties-backblaze-provider.md))
+
+### provider Constraints
+
+**constant**: the value of this property must be equal to:
+
+```json
+"backblaze"
+```
+
+## parameters
+
+
+
+`parameters`
+
+* is optional
+
+* Type: `object` ([B2 (Backblaze) protocol parameters](add-backup-repository-input-defs-b2-backblaze-protocol-parameters.md))
+
+* cannot be null
+
+* defined in: [add-backup-repository input](add-backup-repository-input-defs-b2-backblaze-protocol-parameters.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/anyOf/0/allOf/0/properties/parameters")
+
+### parameters Type
+
+`object` ([B2 (Backblaze) protocol parameters](add-backup-repository-input-defs-b2-backblaze-protocol-parameters.md))
diff --git a/core/add-backup-repository-input-anyof-0.md b/core/add-backup-repository-input-anyof-0.md
new file mode 100644
index 000000000..40400c7fb
--- /dev/null
+++ b/core/add-backup-repository-input-anyof-0.md
@@ -0,0 +1,19 @@
+# Untitled undefined type in add-backup-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-repository-input.json#/anyOf/0
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-backup-repository-input.json\*](cluster/add-backup-repository-input.json "open original schema") |
+
+## 0 Type
+
+merged type ([Details](add-backup-repository-input-anyof-0.md))
+
+all of
+
+* [BackBlaze schema](add-backup-repository-input-anyof-0-allof-backblaze-schema.md "check type definition")
diff --git a/core/add-backup-repository-input-anyof-1-allof-s3-based-provider-schema-properties-s3-providers.md b/core/add-backup-repository-input-anyof-1-allof-s3-based-provider-schema-properties-s3-providers.md
new file mode 100644
index 000000000..8e7046c48
--- /dev/null
+++ b/core/add-backup-repository-input-anyof-1-allof-s3-based-provider-schema-properties-s3-providers.md
@@ -0,0 +1,25 @@
+# S3 providers Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-repository-input.json#/anyOf/1/allOf/0/properties/provider
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-backup-repository-input.json\*](cluster/add-backup-repository-input.json "open original schema") |
+
+## provider Type
+
+unknown ([S3 providers](add-backup-repository-input-anyof-1-allof-s3-based-provider-schema-properties-s3-providers.md))
+
+## provider Constraints
+
+**enum**: the value of this property must be equal to one of the following values:
+
+| Value | Explanation |
+| :--------------- | :---------- |
+| `"aws"` | |
+| `"digitalocean"` | |
+| `"generic-s3"` | |
diff --git a/core/add-backup-repository-input-anyof-1-allof-s3-based-provider-schema-properties.md b/core/add-backup-repository-input-anyof-1-allof-s3-based-provider-schema-properties.md
new file mode 100644
index 000000000..f4220b46a
--- /dev/null
+++ b/core/add-backup-repository-input-anyof-1-allof-s3-based-provider-schema-properties.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in add-backup-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-repository-input.json#/anyOf/1/allOf/0/properties
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-backup-repository-input.json\*](cluster/add-backup-repository-input.json "open original schema") |
+
+## properties Type
+
+unknown
diff --git a/core/add-backup-repository-input-anyof-1-allof-s3-based-provider-schema.md b/core/add-backup-repository-input-anyof-1-allof-s3-based-provider-schema.md
new file mode 100644
index 000000000..c6d8a18bf
--- /dev/null
+++ b/core/add-backup-repository-input-anyof-1-allof-s3-based-provider-schema.md
@@ -0,0 +1,68 @@
+# S3-based provider schema Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-repository-input.json#/anyOf/1/allOf/0
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [add-backup-repository-input.json\*](cluster/add-backup-repository-input.json "open original schema") |
+
+## 0 Type
+
+unknown ([S3-based provider schema](add-backup-repository-input-anyof-1-allof-s3-based-provider-schema.md))
+
+# 0 Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------ | :------------ | :------- | :------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [provider](#provider) | Not specified | Optional | cannot be null | [add-backup-repository input](add-backup-repository-input-anyof-1-allof-s3-based-provider-schema-properties-s3-providers.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/anyOf/1/allOf/0/properties/provider") |
+| [parameters](#parameters) | `object` | Optional | cannot be null | [add-backup-repository input](add-backup-repository-input-defs-s3-amazon-aws-protocol-parameters.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/anyOf/1/allOf/0/properties/parameters") |
+
+## provider
+
+
+
+`provider`
+
+* is optional
+
+* Type: unknown ([S3 providers](add-backup-repository-input-anyof-1-allof-s3-based-provider-schema-properties-s3-providers.md))
+
+* cannot be null
+
+* defined in: [add-backup-repository input](add-backup-repository-input-anyof-1-allof-s3-based-provider-schema-properties-s3-providers.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/anyOf/1/allOf/0/properties/provider")
+
+### provider Type
+
+unknown ([S3 providers](add-backup-repository-input-anyof-1-allof-s3-based-provider-schema-properties-s3-providers.md))
+
+### provider Constraints
+
+**enum**: the value of this property must be equal to one of the following values:
+
+| Value | Explanation |
+| :--------------- | :---------- |
+| `"aws"` | |
+| `"digitalocean"` | |
+| `"generic-s3"` | |
+
+## parameters
+
+
+
+`parameters`
+
+* is optional
+
+* Type: `object` ([S3 (Amazon AWS) protocol parameters](add-backup-repository-input-defs-s3-amazon-aws-protocol-parameters.md))
+
+* cannot be null
+
+* defined in: [add-backup-repository input](add-backup-repository-input-defs-s3-amazon-aws-protocol-parameters.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/anyOf/1/allOf/0/properties/parameters")
+
+### parameters Type
+
+`object` ([S3 (Amazon AWS) protocol parameters](add-backup-repository-input-defs-s3-amazon-aws-protocol-parameters.md))
diff --git a/core/add-backup-repository-input-anyof-1.md b/core/add-backup-repository-input-anyof-1.md
new file mode 100644
index 000000000..50e9ba1e4
--- /dev/null
+++ b/core/add-backup-repository-input-anyof-1.md
@@ -0,0 +1,19 @@
+# Untitled undefined type in add-backup-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-repository-input.json#/anyOf/1
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-backup-repository-input.json\*](cluster/add-backup-repository-input.json "open original schema") |
+
+## 1 Type
+
+merged type ([Details](add-backup-repository-input-anyof-1.md))
+
+all of
+
+* [S3-based provider schema](add-backup-repository-input-anyof-1-allof-s3-based-provider-schema.md "check type definition")
diff --git a/core/add-backup-repository-input-anyof-2-allof-azure-schema-properties-azure-provider.md b/core/add-backup-repository-input-anyof-2-allof-azure-schema-properties-azure-provider.md
new file mode 100644
index 000000000..9e8405e1c
--- /dev/null
+++ b/core/add-backup-repository-input-anyof-2-allof-azure-schema-properties-azure-provider.md
@@ -0,0 +1,23 @@
+# Azure provider Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-repository-input.json#/anyOf/2/allOf/0/properties/provider
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-backup-repository-input.json\*](cluster/add-backup-repository-input.json "open original schema") |
+
+## provider Type
+
+unknown ([Azure provider](add-backup-repository-input-anyof-2-allof-azure-schema-properties-azure-provider.md))
+
+## provider Constraints
+
+**constant**: the value of this property must be equal to:
+
+```json
+"azure"
+```
diff --git a/core/add-backup-repository-input-anyof-2-allof-azure-schema-properties.md b/core/add-backup-repository-input-anyof-2-allof-azure-schema-properties.md
new file mode 100644
index 000000000..b8b1c4a44
--- /dev/null
+++ b/core/add-backup-repository-input-anyof-2-allof-azure-schema-properties.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in add-backup-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-repository-input.json#/anyOf/2/allOf/0/properties
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-backup-repository-input.json\*](cluster/add-backup-repository-input.json "open original schema") |
+
+## properties Type
+
+unknown
diff --git a/core/add-backup-repository-input-anyof-2-allof-azure-schema.md b/core/add-backup-repository-input-anyof-2-allof-azure-schema.md
new file mode 100644
index 000000000..bbd692981
--- /dev/null
+++ b/core/add-backup-repository-input-anyof-2-allof-azure-schema.md
@@ -0,0 +1,66 @@
+# Azure schema Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-repository-input.json#/anyOf/2/allOf/0
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [add-backup-repository-input.json\*](cluster/add-backup-repository-input.json "open original schema") |
+
+## 0 Type
+
+unknown ([Azure schema](add-backup-repository-input-anyof-2-allof-azure-schema.md))
+
+# 0 Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------ | :------------ | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| [provider](#provider) | Not specified | Optional | cannot be null | [add-backup-repository input](add-backup-repository-input-anyof-2-allof-azure-schema-properties-azure-provider.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/anyOf/2/allOf/0/properties/provider") |
+| [parameters](#parameters) | `object` | Optional | cannot be null | [add-backup-repository input](add-backup-repository-input-defs-azure-blob-storage-protocol-parameters.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/anyOf/2/allOf/0/properties/parameters") |
+
+## provider
+
+
+
+`provider`
+
+* is optional
+
+* Type: unknown ([Azure provider](add-backup-repository-input-anyof-2-allof-azure-schema-properties-azure-provider.md))
+
+* cannot be null
+
+* defined in: [add-backup-repository input](add-backup-repository-input-anyof-2-allof-azure-schema-properties-azure-provider.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/anyOf/2/allOf/0/properties/provider")
+
+### provider Type
+
+unknown ([Azure provider](add-backup-repository-input-anyof-2-allof-azure-schema-properties-azure-provider.md))
+
+### provider Constraints
+
+**constant**: the value of this property must be equal to:
+
+```json
+"azure"
+```
+
+## parameters
+
+
+
+`parameters`
+
+* is optional
+
+* Type: `object` ([Azure blob storage protocol parameters](add-backup-repository-input-defs-azure-blob-storage-protocol-parameters.md))
+
+* cannot be null
+
+* defined in: [add-backup-repository input](add-backup-repository-input-defs-azure-blob-storage-protocol-parameters.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/anyOf/2/allOf/0/properties/parameters")
+
+### parameters Type
+
+`object` ([Azure blob storage protocol parameters](add-backup-repository-input-defs-azure-blob-storage-protocol-parameters.md))
diff --git a/core/add-backup-repository-input-anyof-2.md b/core/add-backup-repository-input-anyof-2.md
new file mode 100644
index 000000000..b1c4511df
--- /dev/null
+++ b/core/add-backup-repository-input-anyof-2.md
@@ -0,0 +1,19 @@
+# Untitled undefined type in add-backup-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-repository-input.json#/anyOf/2
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-backup-repository-input.json\*](cluster/add-backup-repository-input.json "open original schema") |
+
+## 2 Type
+
+merged type ([Details](add-backup-repository-input-anyof-2.md))
+
+all of
+
+* [Azure schema](add-backup-repository-input-anyof-2-allof-azure-schema.md "check type definition")
diff --git a/core/add-backup-repository-input-anyof-3-allof-smb-schema-properties-smb-provider.md b/core/add-backup-repository-input-anyof-3-allof-smb-schema-properties-smb-provider.md
new file mode 100644
index 000000000..bc67ef139
--- /dev/null
+++ b/core/add-backup-repository-input-anyof-3-allof-smb-schema-properties-smb-provider.md
@@ -0,0 +1,23 @@
+# SMB provider Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-repository-input.json#/anyOf/3/allOf/0/properties/provider
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-backup-repository-input.json\*](cluster/add-backup-repository-input.json "open original schema") |
+
+## provider Type
+
+unknown ([SMB provider](add-backup-repository-input-anyof-3-allof-smb-schema-properties-smb-provider.md))
+
+## provider Constraints
+
+**constant**: the value of this property must be equal to:
+
+```json
+"smb"
+```
diff --git a/core/add-backup-repository-input-anyof-3-allof-smb-schema-properties-url.md b/core/add-backup-repository-input-anyof-3-allof-smb-schema-properties-url.md
new file mode 100644
index 000000000..e4ab2a259
--- /dev/null
+++ b/core/add-backup-repository-input-anyof-3-allof-smb-schema-properties-url.md
@@ -0,0 +1,25 @@
+# Untitled undefined type in add-backup-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-repository-input.json#/anyOf/3/allOf/0/properties/url
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-backup-repository-input.json\*](cluster/add-backup-repository-input.json "open original schema") |
+
+## url Type
+
+unknown
+
+## url Constraints
+
+**pattern**: the string must match the following regular expression:
+
+```regexp
+^smb:.+$
+```
+
+[try pattern](https://regexr.com/?expression=%5Esmb%3A.%2B%24 "try regular expression with regexr.com")
diff --git a/core/add-backup-repository-input-anyof-3-allof-smb-schema-properties.md b/core/add-backup-repository-input-anyof-3-allof-smb-schema-properties.md
new file mode 100644
index 000000000..77360104e
--- /dev/null
+++ b/core/add-backup-repository-input-anyof-3-allof-smb-schema-properties.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in add-backup-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-repository-input.json#/anyOf/3/allOf/0/properties
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-backup-repository-input.json\*](cluster/add-backup-repository-input.json "open original schema") |
+
+## properties Type
+
+unknown
diff --git a/core/add-backup-repository-input-anyof-3-allof-smb-schema.md b/core/add-backup-repository-input-anyof-3-allof-smb-schema.md
new file mode 100644
index 000000000..b41e3ef75
--- /dev/null
+++ b/core/add-backup-repository-input-anyof-3-allof-smb-schema.md
@@ -0,0 +1,95 @@
+# SMB schema Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-repository-input.json#/anyOf/3/allOf/0
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [add-backup-repository-input.json\*](cluster/add-backup-repository-input.json "open original schema") |
+
+## 0 Type
+
+unknown ([SMB schema](add-backup-repository-input-anyof-3-allof-smb-schema.md))
+
+# 0 Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------ | :------------ | :------- | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [provider](#provider) | Not specified | Optional | cannot be null | [add-backup-repository input](add-backup-repository-input-anyof-3-allof-smb-schema-properties-smb-provider.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/anyOf/3/allOf/0/properties/provider") |
+| [url](#url) | Not specified | Optional | cannot be null | [add-backup-repository input](add-backup-repository-input-anyof-3-allof-smb-schema-properties-url.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/anyOf/3/allOf/0/properties/url") |
+| [parameters](#parameters) | `object` | Optional | cannot be null | [add-backup-repository input](add-backup-repository-input-defs-smb-rclone-parameters.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/anyOf/3/allOf/0/properties/parameters") |
+
+## provider
+
+
+
+`provider`
+
+* is optional
+
+* Type: unknown ([SMB provider](add-backup-repository-input-anyof-3-allof-smb-schema-properties-smb-provider.md))
+
+* cannot be null
+
+* defined in: [add-backup-repository input](add-backup-repository-input-anyof-3-allof-smb-schema-properties-smb-provider.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/anyOf/3/allOf/0/properties/provider")
+
+### provider Type
+
+unknown ([SMB provider](add-backup-repository-input-anyof-3-allof-smb-schema-properties-smb-provider.md))
+
+### provider Constraints
+
+**constant**: the value of this property must be equal to:
+
+```json
+"smb"
+```
+
+## url
+
+
+
+`url`
+
+* is optional
+
+* Type: unknown
+
+* cannot be null
+
+* defined in: [add-backup-repository input](add-backup-repository-input-anyof-3-allof-smb-schema-properties-url.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/anyOf/3/allOf/0/properties/url")
+
+### url Type
+
+unknown
+
+### url Constraints
+
+**pattern**: the string must match the following regular expression:
+
+```regexp
+^smb:.+$
+```
+
+[try pattern](https://regexr.com/?expression=%5Esmb%3A.%2B%24 "try regular expression with regexr.com")
+
+## parameters
+
+
+
+`parameters`
+
+* is optional
+
+* Type: `object` ([SMB Rclone parameters](add-backup-repository-input-defs-smb-rclone-parameters.md))
+
+* cannot be null
+
+* defined in: [add-backup-repository input](add-backup-repository-input-defs-smb-rclone-parameters.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/anyOf/3/allOf/0/properties/parameters")
+
+### parameters Type
+
+`object` ([SMB Rclone parameters](add-backup-repository-input-defs-smb-rclone-parameters.md))
diff --git a/core/add-backup-repository-input-anyof-3.md b/core/add-backup-repository-input-anyof-3.md
new file mode 100644
index 000000000..9a3ad7ece
--- /dev/null
+++ b/core/add-backup-repository-input-anyof-3.md
@@ -0,0 +1,19 @@
+# Untitled undefined type in add-backup-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-repository-input.json#/anyOf/3
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-backup-repository-input.json\*](cluster/add-backup-repository-input.json "open original schema") |
+
+## 3 Type
+
+merged type ([Details](add-backup-repository-input-anyof-3.md))
+
+all of
+
+* [SMB schema](add-backup-repository-input-anyof-3-allof-smb-schema.md "check type definition")
diff --git a/core/add-backup-repository-input-anyof-4-allof-local-storage-properties-cluster-internal-provider.md b/core/add-backup-repository-input-anyof-4-allof-local-storage-properties-cluster-internal-provider.md
new file mode 100644
index 000000000..e5d1eac9a
--- /dev/null
+++ b/core/add-backup-repository-input-anyof-4-allof-local-storage-properties-cluster-internal-provider.md
@@ -0,0 +1,23 @@
+# Cluster internal provider Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-repository-input.json#/anyOf/4/allOf/0/properties/provider
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-backup-repository-input.json\*](cluster/add-backup-repository-input.json "open original schema") |
+
+## provider Type
+
+unknown ([Cluster internal provider](add-backup-repository-input-anyof-4-allof-local-storage-properties-cluster-internal-provider.md))
+
+## provider Constraints
+
+**constant**: the value of this property must be equal to:
+
+```json
+"cluster"
+```
diff --git a/core/add-backup-repository-input-anyof-4-allof-local-storage-properties-url.md b/core/add-backup-repository-input-anyof-4-allof-local-storage-properties-url.md
new file mode 100644
index 000000000..8f83a9e3c
--- /dev/null
+++ b/core/add-backup-repository-input-anyof-4-allof-local-storage-properties-url.md
@@ -0,0 +1,25 @@
+# Untitled undefined type in add-backup-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-repository-input.json#/anyOf/4/allOf/0/properties/url
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-backup-repository-input.json\*](cluster/add-backup-repository-input.json "open original schema") |
+
+## url Type
+
+unknown
+
+## url Constraints
+
+**pattern**: the string must match the following regular expression:
+
+```regexp
+^webdav:.+$
+```
+
+[try pattern](https://regexr.com/?expression=%5Ewebdav%3A.%2B%24 "try regular expression with regexr.com")
diff --git a/core/add-backup-repository-input-anyof-4-allof-local-storage-properties.md b/core/add-backup-repository-input-anyof-4-allof-local-storage-properties.md
new file mode 100644
index 000000000..d3b64157a
--- /dev/null
+++ b/core/add-backup-repository-input-anyof-4-allof-local-storage-properties.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in add-backup-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-repository-input.json#/anyOf/4/allOf/0/properties
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-backup-repository-input.json\*](cluster/add-backup-repository-input.json "open original schema") |
+
+## properties Type
+
+unknown
diff --git a/core/add-backup-repository-input-anyof-4-allof-local-storage.md b/core/add-backup-repository-input-anyof-4-allof-local-storage.md
new file mode 100644
index 000000000..2ecec2b90
--- /dev/null
+++ b/core/add-backup-repository-input-anyof-4-allof-local-storage.md
@@ -0,0 +1,95 @@
+# Local storage Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-repository-input.json#/anyOf/4/allOf/0
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [add-backup-repository-input.json\*](cluster/add-backup-repository-input.json "open original schema") |
+
+## 0 Type
+
+unknown ([Local storage](add-backup-repository-input-anyof-4-allof-local-storage.md))
+
+# 0 Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------ | :------------ | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| [provider](#provider) | Not specified | Optional | cannot be null | [add-backup-repository input](add-backup-repository-input-anyof-4-allof-local-storage-properties-cluster-internal-provider.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/anyOf/4/allOf/0/properties/provider") |
+| [url](#url) | Not specified | Optional | cannot be null | [add-backup-repository input](add-backup-repository-input-anyof-4-allof-local-storage-properties-url.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/anyOf/4/allOf/0/properties/url") |
+| [parameters](#parameters) | `object` | Optional | cannot be null | [add-backup-repository input](add-backup-repository-input-defs-cluster-internal-rclone-parameters.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/anyOf/4/allOf/0/properties/parameters") |
+
+## provider
+
+
+
+`provider`
+
+* is optional
+
+* Type: unknown ([Cluster internal provider](add-backup-repository-input-anyof-4-allof-local-storage-properties-cluster-internal-provider.md))
+
+* cannot be null
+
+* defined in: [add-backup-repository input](add-backup-repository-input-anyof-4-allof-local-storage-properties-cluster-internal-provider.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/anyOf/4/allOf/0/properties/provider")
+
+### provider Type
+
+unknown ([Cluster internal provider](add-backup-repository-input-anyof-4-allof-local-storage-properties-cluster-internal-provider.md))
+
+### provider Constraints
+
+**constant**: the value of this property must be equal to:
+
+```json
+"cluster"
+```
+
+## url
+
+
+
+`url`
+
+* is optional
+
+* Type: unknown
+
+* cannot be null
+
+* defined in: [add-backup-repository input](add-backup-repository-input-anyof-4-allof-local-storage-properties-url.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/anyOf/4/allOf/0/properties/url")
+
+### url Type
+
+unknown
+
+### url Constraints
+
+**pattern**: the string must match the following regular expression:
+
+```regexp
+^webdav:.+$
+```
+
+[try pattern](https://regexr.com/?expression=%5Ewebdav%3A.%2B%24 "try regular expression with regexr.com")
+
+## parameters
+
+
+
+`parameters`
+
+* is optional
+
+* Type: `object` ([Cluster-internal Rclone parameters](add-backup-repository-input-defs-cluster-internal-rclone-parameters.md))
+
+* cannot be null
+
+* defined in: [add-backup-repository input](add-backup-repository-input-defs-cluster-internal-rclone-parameters.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/anyOf/4/allOf/0/properties/parameters")
+
+### parameters Type
+
+`object` ([Cluster-internal Rclone parameters](add-backup-repository-input-defs-cluster-internal-rclone-parameters.md))
diff --git a/core/add-backup-repository-input-anyof-4.md b/core/add-backup-repository-input-anyof-4.md
new file mode 100644
index 000000000..a8271a798
--- /dev/null
+++ b/core/add-backup-repository-input-anyof-4.md
@@ -0,0 +1,19 @@
+# Untitled undefined type in add-backup-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-repository-input.json#/anyOf/4
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-backup-repository-input.json\*](cluster/add-backup-repository-input.json "open original schema") |
+
+## 4 Type
+
+merged type ([Details](add-backup-repository-input-anyof-4.md))
+
+all of
+
+* [Local storage](add-backup-repository-input-anyof-4-allof-local-storage.md "check type definition")
diff --git a/core/add-backup-repository-input-defs-azure-blob-storage-protocol-parameters-properties-azure_account_key.md b/core/add-backup-repository-input-defs-azure-blob-storage-protocol-parameters-properties-azure_account_key.md
new file mode 100644
index 000000000..7d2da0b87
--- /dev/null
+++ b/core/add-backup-repository-input-defs-azure-blob-storage-protocol-parameters-properties-azure_account_key.md
@@ -0,0 +1,15 @@
+# Untitled string in add-backup-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/azure_parameters/properties/azure_account_key
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-backup-repository-input.json\*](cluster/add-backup-repository-input.json "open original schema") |
+
+## azure\_account\_key Type
+
+`string`
diff --git a/core/add-backup-repository-input-defs-azure-blob-storage-protocol-parameters-properties-azure_account_name.md b/core/add-backup-repository-input-defs-azure-blob-storage-protocol-parameters-properties-azure_account_name.md
new file mode 100644
index 000000000..8a5f02012
--- /dev/null
+++ b/core/add-backup-repository-input-defs-azure-blob-storage-protocol-parameters-properties-azure_account_name.md
@@ -0,0 +1,15 @@
+# Untitled string in add-backup-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/azure_parameters/properties/azure_account_name
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-backup-repository-input.json\*](cluster/add-backup-repository-input.json "open original schema") |
+
+## azure\_account\_name Type
+
+`string`
diff --git a/core/add-backup-repository-input-defs-azure-blob-storage-protocol-parameters.md b/core/add-backup-repository-input-defs-azure-blob-storage-protocol-parameters.md
new file mode 100644
index 000000000..d6d91c8b0
--- /dev/null
+++ b/core/add-backup-repository-input-defs-azure-blob-storage-protocol-parameters.md
@@ -0,0 +1,58 @@
+# Azure blob storage protocol parameters Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/azure_parameters
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Forbidden | none | [add-backup-repository-input.json\*](cluster/add-backup-repository-input.json "open original schema") |
+
+## azure\_parameters Type
+
+`object` ([Azure blob storage protocol parameters](add-backup-repository-input-defs-azure-blob-storage-protocol-parameters.md))
+
+# azure\_parameters Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------------------------ | :------- | :------- | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [azure\_account\_name](#azure_account_name) | `string` | Required | cannot be null | [add-backup-repository input](add-backup-repository-input-defs-azure-blob-storage-protocol-parameters-properties-azure_account_name.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/azure_parameters/properties/azure_account_name") |
+| [azure\_account\_key](#azure_account_key) | `string` | Required | cannot be null | [add-backup-repository input](add-backup-repository-input-defs-azure-blob-storage-protocol-parameters-properties-azure_account_key.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/azure_parameters/properties/azure_account_key") |
+
+## azure\_account\_name
+
+
+
+`azure_account_name`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [add-backup-repository input](add-backup-repository-input-defs-azure-blob-storage-protocol-parameters-properties-azure_account_name.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/azure_parameters/properties/azure_account_name")
+
+### azure\_account\_name Type
+
+`string`
+
+## azure\_account\_key
+
+
+
+`azure_account_key`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [add-backup-repository input](add-backup-repository-input-defs-azure-blob-storage-protocol-parameters-properties-azure_account_key.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/azure_parameters/properties/azure_account_key")
+
+### azure\_account\_key Type
+
+`string`
diff --git a/core/add-backup-repository-input-defs-b2-backblaze-protocol-parameters-properties-b2_account_id.md b/core/add-backup-repository-input-defs-b2-backblaze-protocol-parameters-properties-b2_account_id.md
new file mode 100644
index 000000000..ad47ab915
--- /dev/null
+++ b/core/add-backup-repository-input-defs-b2-backblaze-protocol-parameters-properties-b2_account_id.md
@@ -0,0 +1,15 @@
+# Untitled string in add-backup-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/b2_parameters/properties/b2_account_id
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-backup-repository-input.json\*](cluster/add-backup-repository-input.json "open original schema") |
+
+## b2\_account\_id Type
+
+`string`
diff --git a/core/add-backup-repository-input-defs-b2-backblaze-protocol-parameters-properties-b2_account_key.md b/core/add-backup-repository-input-defs-b2-backblaze-protocol-parameters-properties-b2_account_key.md
new file mode 100644
index 000000000..3e3277bdd
--- /dev/null
+++ b/core/add-backup-repository-input-defs-b2-backblaze-protocol-parameters-properties-b2_account_key.md
@@ -0,0 +1,15 @@
+# Untitled string in add-backup-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/b2_parameters/properties/b2_account_key
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-backup-repository-input.json\*](cluster/add-backup-repository-input.json "open original schema") |
+
+## b2\_account\_key Type
+
+`string`
diff --git a/core/add-backup-repository-input-defs-b2-backblaze-protocol-parameters.md b/core/add-backup-repository-input-defs-b2-backblaze-protocol-parameters.md
new file mode 100644
index 000000000..a4fd79893
--- /dev/null
+++ b/core/add-backup-repository-input-defs-b2-backblaze-protocol-parameters.md
@@ -0,0 +1,58 @@
+# B2 (Backblaze) protocol parameters Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/b2_parameters
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Forbidden | none | [add-backup-repository-input.json\*](cluster/add-backup-repository-input.json "open original schema") |
+
+## b2\_parameters Type
+
+`object` ([B2 (Backblaze) protocol parameters](add-backup-repository-input-defs-b2-backblaze-protocol-parameters.md))
+
+# b2\_parameters Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :---------------------------------- | :------- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [b2\_account\_id](#b2_account_id) | `string` | Required | cannot be null | [add-backup-repository input](add-backup-repository-input-defs-b2-backblaze-protocol-parameters-properties-b2_account_id.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/b2_parameters/properties/b2_account_id") |
+| [b2\_account\_key](#b2_account_key) | `string` | Required | cannot be null | [add-backup-repository input](add-backup-repository-input-defs-b2-backblaze-protocol-parameters-properties-b2_account_key.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/b2_parameters/properties/b2_account_key") |
+
+## b2\_account\_id
+
+
+
+`b2_account_id`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [add-backup-repository input](add-backup-repository-input-defs-b2-backblaze-protocol-parameters-properties-b2_account_id.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/b2_parameters/properties/b2_account_id")
+
+### b2\_account\_id Type
+
+`string`
+
+## b2\_account\_key
+
+
+
+`b2_account_key`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [add-backup-repository input](add-backup-repository-input-defs-b2-backblaze-protocol-parameters-properties-b2_account_key.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/b2_parameters/properties/b2_account_key")
+
+### b2\_account\_key Type
+
+`string`
diff --git a/core/add-backup-repository-input-defs-cluster-internal-rclone-parameters.md b/core/add-backup-repository-input-defs-cluster-internal-rclone-parameters.md
new file mode 100644
index 000000000..f4552a09a
--- /dev/null
+++ b/core/add-backup-repository-input-defs-cluster-internal-rclone-parameters.md
@@ -0,0 +1,20 @@
+# Cluster-internal Rclone parameters Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/cluster_parameters
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Forbidden | none | [add-backup-repository-input.json\*](cluster/add-backup-repository-input.json "open original schema") |
+
+## cluster\_parameters Type
+
+`object` ([Cluster-internal Rclone parameters](add-backup-repository-input-defs-cluster-internal-rclone-parameters.md))
+
+# cluster\_parameters Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------- | :--- | :------- | :------- | :--------- |
diff --git a/core/add-backup-repository-input-defs-s3-amazon-aws-protocol-parameters-properties-aws_access_key_id.md b/core/add-backup-repository-input-defs-s3-amazon-aws-protocol-parameters-properties-aws_access_key_id.md
new file mode 100644
index 000000000..bf448b470
--- /dev/null
+++ b/core/add-backup-repository-input-defs-s3-amazon-aws-protocol-parameters-properties-aws_access_key_id.md
@@ -0,0 +1,15 @@
+# Untitled string in add-backup-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/s3_parameters/properties/aws_access_key_id
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-backup-repository-input.json\*](cluster/add-backup-repository-input.json "open original schema") |
+
+## aws\_access\_key\_id Type
+
+`string`
diff --git a/core/add-backup-repository-input-defs-s3-amazon-aws-protocol-parameters-properties-aws_default_region.md b/core/add-backup-repository-input-defs-s3-amazon-aws-protocol-parameters-properties-aws_default_region.md
new file mode 100644
index 000000000..a58df75a1
--- /dev/null
+++ b/core/add-backup-repository-input-defs-s3-amazon-aws-protocol-parameters-properties-aws_default_region.md
@@ -0,0 +1,15 @@
+# Untitled string in add-backup-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/s3_parameters/properties/aws_default_region
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-backup-repository-input.json\*](cluster/add-backup-repository-input.json "open original schema") |
+
+## aws\_default\_region Type
+
+`string`
diff --git a/core/add-backup-repository-input-defs-s3-amazon-aws-protocol-parameters-properties-aws_secret_access_key.md b/core/add-backup-repository-input-defs-s3-amazon-aws-protocol-parameters-properties-aws_secret_access_key.md
new file mode 100644
index 000000000..e49c02ae0
--- /dev/null
+++ b/core/add-backup-repository-input-defs-s3-amazon-aws-protocol-parameters-properties-aws_secret_access_key.md
@@ -0,0 +1,15 @@
+# Untitled string in add-backup-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/s3_parameters/properties/aws_secret_access_key
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-backup-repository-input.json\*](cluster/add-backup-repository-input.json "open original schema") |
+
+## aws\_secret\_access\_key Type
+
+`string`
diff --git a/core/add-backup-repository-input-defs-s3-amazon-aws-protocol-parameters.md b/core/add-backup-repository-input-defs-s3-amazon-aws-protocol-parameters.md
new file mode 100644
index 000000000..c6babbdc9
--- /dev/null
+++ b/core/add-backup-repository-input-defs-s3-amazon-aws-protocol-parameters.md
@@ -0,0 +1,77 @@
+# S3 (Amazon AWS) protocol parameters Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/s3_parameters
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Forbidden | none | [add-backup-repository-input.json\*](cluster/add-backup-repository-input.json "open original schema") |
+
+## s3\_parameters Type
+
+`object` ([S3 (Amazon AWS) protocol parameters](add-backup-repository-input-defs-s3-amazon-aws-protocol-parameters.md))
+
+# s3\_parameters Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------------------------------- | :------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| [aws\_default\_region](#aws_default_region) | `string` | Optional | cannot be null | [add-backup-repository input](add-backup-repository-input-defs-s3-amazon-aws-protocol-parameters-properties-aws_default_region.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/s3_parameters/properties/aws_default_region") |
+| [aws\_access\_key\_id](#aws_access_key_id) | `string` | Required | cannot be null | [add-backup-repository input](add-backup-repository-input-defs-s3-amazon-aws-protocol-parameters-properties-aws_access_key_id.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/s3_parameters/properties/aws_access_key_id") |
+| [aws\_secret\_access\_key](#aws_secret_access_key) | `string` | Required | cannot be null | [add-backup-repository input](add-backup-repository-input-defs-s3-amazon-aws-protocol-parameters-properties-aws_secret_access_key.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/s3_parameters/properties/aws_secret_access_key") |
+
+## aws\_default\_region
+
+
+
+`aws_default_region`
+
+* is optional
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [add-backup-repository input](add-backup-repository-input-defs-s3-amazon-aws-protocol-parameters-properties-aws_default_region.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/s3_parameters/properties/aws_default_region")
+
+### aws\_default\_region Type
+
+`string`
+
+## aws\_access\_key\_id
+
+
+
+`aws_access_key_id`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [add-backup-repository input](add-backup-repository-input-defs-s3-amazon-aws-protocol-parameters-properties-aws_access_key_id.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/s3_parameters/properties/aws_access_key_id")
+
+### aws\_access\_key\_id Type
+
+`string`
+
+## aws\_secret\_access\_key
+
+
+
+`aws_secret_access_key`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [add-backup-repository input](add-backup-repository-input-defs-s3-amazon-aws-protocol-parameters-properties-aws_secret_access_key.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/s3_parameters/properties/aws_secret_access_key")
+
+### aws\_secret\_access\_key Type
+
+`string`
diff --git a/core/add-backup-repository-input-defs-smb-rclone-parameters-properties-smb_domain.md b/core/add-backup-repository-input-defs-smb-rclone-parameters-properties-smb_domain.md
new file mode 100644
index 000000000..0fd2e0325
--- /dev/null
+++ b/core/add-backup-repository-input-defs-smb-rclone-parameters-properties-smb_domain.md
@@ -0,0 +1,15 @@
+# Untitled string in add-backup-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/smb_parameters/properties/smb_domain
+```
+
+The short form (NT-style) domain name
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-backup-repository-input.json\*](cluster/add-backup-repository-input.json "open original schema") |
+
+## smb\_domain Type
+
+`string`
diff --git a/core/add-backup-repository-input-defs-smb-rclone-parameters-properties-smb_host.md b/core/add-backup-repository-input-defs-smb-rclone-parameters-properties-smb_host.md
new file mode 100644
index 000000000..560497dc7
--- /dev/null
+++ b/core/add-backup-repository-input-defs-smb-rclone-parameters-properties-smb_host.md
@@ -0,0 +1,21 @@
+# Untitled string in add-backup-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/smb_parameters/properties/smb_host
+```
+
+Host name or IP address
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-backup-repository-input.json\*](cluster/add-backup-repository-input.json "open original schema") |
+
+## smb\_host Type
+
+`string`
+
+## smb\_host Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+**hostname**: the string must be a hostname, according to [RFC 1123, section 2.1](https://tools.ietf.org/html/rfc1123 "check the specification")
diff --git a/core/add-backup-repository-input-defs-smb-rclone-parameters-properties-smb_pass.md b/core/add-backup-repository-input-defs-smb-rclone-parameters-properties-smb_pass.md
new file mode 100644
index 000000000..b08b9688d
--- /dev/null
+++ b/core/add-backup-repository-input-defs-smb-rclone-parameters-properties-smb_pass.md
@@ -0,0 +1,15 @@
+# Untitled string in add-backup-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/smb_parameters/properties/smb_pass
+```
+
+User password for share connection
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-backup-repository-input.json\*](cluster/add-backup-repository-input.json "open original schema") |
+
+## smb\_pass Type
+
+`string`
diff --git a/core/add-backup-repository-input-defs-smb-rclone-parameters-properties-smb_user.md b/core/add-backup-repository-input-defs-smb-rclone-parameters-properties-smb_user.md
new file mode 100644
index 000000000..7edb8cc41
--- /dev/null
+++ b/core/add-backup-repository-input-defs-smb-rclone-parameters-properties-smb_user.md
@@ -0,0 +1,19 @@
+# Untitled string in add-backup-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/smb_parameters/properties/smb_user
+```
+
+User name for share connection
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-backup-repository-input.json\*](cluster/add-backup-repository-input.json "open original schema") |
+
+## smb\_user Type
+
+`string`
+
+## smb\_user Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/add-backup-repository-input-defs-smb-rclone-parameters.md b/core/add-backup-repository-input-defs-smb-rclone-parameters.md
new file mode 100644
index 000000000..494179273
--- /dev/null
+++ b/core/add-backup-repository-input-defs-smb-rclone-parameters.md
@@ -0,0 +1,106 @@
+# SMB Rclone parameters Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/smb_parameters
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Forbidden | none | [add-backup-repository-input.json\*](cluster/add-backup-repository-input.json "open original schema") |
+
+## smb\_parameters Type
+
+`object` ([SMB Rclone parameters](add-backup-repository-input-defs-smb-rclone-parameters.md))
+
+# smb\_parameters Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------- | :------- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [smb\_host](#smb_host) | `string` | Required | cannot be null | [add-backup-repository input](add-backup-repository-input-defs-smb-rclone-parameters-properties-smb_host.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/smb_parameters/properties/smb_host") |
+| [smb\_user](#smb_user) | `string` | Required | cannot be null | [add-backup-repository input](add-backup-repository-input-defs-smb-rclone-parameters-properties-smb_user.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/smb_parameters/properties/smb_user") |
+| [smb\_pass](#smb_pass) | `string` | Required | cannot be null | [add-backup-repository input](add-backup-repository-input-defs-smb-rclone-parameters-properties-smb_pass.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/smb_parameters/properties/smb_pass") |
+| [smb\_domain](#smb_domain) | `string` | Required | cannot be null | [add-backup-repository input](add-backup-repository-input-defs-smb-rclone-parameters-properties-smb_domain.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/smb_parameters/properties/smb_domain") |
+
+## smb\_host
+
+Host name or IP address
+
+`smb_host`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [add-backup-repository input](add-backup-repository-input-defs-smb-rclone-parameters-properties-smb_host.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/smb_parameters/properties/smb_host")
+
+### smb\_host Type
+
+`string`
+
+### smb\_host Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+**hostname**: the string must be a hostname, according to [RFC 1123, section 2.1](https://tools.ietf.org/html/rfc1123 "check the specification")
+
+## smb\_user
+
+User name for share connection
+
+`smb_user`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [add-backup-repository input](add-backup-repository-input-defs-smb-rclone-parameters-properties-smb_user.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/smb_parameters/properties/smb_user")
+
+### smb\_user Type
+
+`string`
+
+### smb\_user Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## smb\_pass
+
+User password for share connection
+
+`smb_pass`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [add-backup-repository input](add-backup-repository-input-defs-smb-rclone-parameters-properties-smb_pass.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/smb_parameters/properties/smb_pass")
+
+### smb\_pass Type
+
+`string`
+
+## smb\_domain
+
+The short form (NT-style) domain name
+
+`smb_domain`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [add-backup-repository input](add-backup-repository-input-defs-smb-rclone-parameters-properties-smb_domain.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/smb_parameters/properties/smb_domain")
+
+### smb\_domain Type
+
+`string`
diff --git a/core/add-backup-repository-input-defs.md b/core/add-backup-repository-input-defs.md
new file mode 100644
index 000000000..81612eac1
--- /dev/null
+++ b/core/add-backup-repository-input-defs.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in add-backup-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-backup-repository-input.json\*](cluster/add-backup-repository-input.json "open original schema") |
+
+## $defs Type
+
+unknown
diff --git a/core/add-backup-repository-input-properties-backup-repository-name.md b/core/add-backup-repository-input-properties-backup-repository-name.md
new file mode 100644
index 000000000..a2346ceea
--- /dev/null
+++ b/core/add-backup-repository-input-properties-backup-repository-name.md
@@ -0,0 +1,15 @@
+# Backup repository name Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-repository-input.json#/properties/name
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-backup-repository-input.json\*](cluster/add-backup-repository-input.json "open original schema") |
+
+## name Type
+
+`string` ([Backup repository name](add-backup-repository-input-properties-backup-repository-name.md))
diff --git a/core/add-backup-repository-input-properties-connection-parameters.md b/core/add-backup-repository-input-properties-connection-parameters.md
new file mode 100644
index 000000000..e61edade4
--- /dev/null
+++ b/core/add-backup-repository-input-properties-connection-parameters.md
@@ -0,0 +1,15 @@
+# Connection parameters Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-repository-input.json#/properties/parameters
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-backup-repository-input.json\*](cluster/add-backup-repository-input.json "open original schema") |
+
+## parameters Type
+
+`object` ([Connection parameters](add-backup-repository-input-properties-connection-parameters.md))
diff --git a/core/add-backup-repository-input-properties-encryption-token.md b/core/add-backup-repository-input-properties-encryption-token.md
new file mode 100644
index 000000000..217b37070
--- /dev/null
+++ b/core/add-backup-repository-input-properties-encryption-token.md
@@ -0,0 +1,15 @@
+# Encryption token Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-repository-input.json#/properties/password
+```
+
+Select the password for restic encryption. If this is empty the API will generate a random password
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-backup-repository-input.json\*](cluster/add-backup-repository-input.json "open original schema") |
+
+## password Type
+
+`string` ([Encryption token](add-backup-repository-input-properties-encryption-token.md))
diff --git a/core/add-backup-repository-input-properties-repository-provider.md b/core/add-backup-repository-input-properties-repository-provider.md
new file mode 100644
index 000000000..e1e775547
--- /dev/null
+++ b/core/add-backup-repository-input-properties-repository-provider.md
@@ -0,0 +1,19 @@
+# Repository provider Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-repository-input.json#/properties/provider
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-backup-repository-input.json\*](cluster/add-backup-repository-input.json "open original schema") |
+
+## provider Type
+
+`string` ([Repository provider](add-backup-repository-input-properties-repository-provider.md))
+
+## provider Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/add-backup-repository-input-properties-restic-url.md b/core/add-backup-repository-input-properties-restic-url.md
new file mode 100644
index 000000000..b58857909
--- /dev/null
+++ b/core/add-backup-repository-input-properties-restic-url.md
@@ -0,0 +1,15 @@
+# Restic URL Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-repository-input.json#/properties/url
+```
+
+URL of the repository in restic format. Must be unique.
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-backup-repository-input.json\*](cluster/add-backup-repository-input.json "open original schema") |
+
+## url Type
+
+`string` ([Restic URL](add-backup-repository-input-properties-restic-url.md))
diff --git a/core/add-backup-repository-input.json b/core/add-backup-repository-input.json
new file mode 100644
index 000000000..9547942e5
--- /dev/null
+++ b/core/add-backup-repository-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"add-backup-repository input","$id":"http://schema.nethserver.org/cluster/add-backup-repository-input.json","description":"Input schema of the add-backup-repository action","examples":[{"name":"repository1","provider":"backblaze","url":"b2:mybucket/mybackup","password":"","parameters":{"b2_account_id":"YEFYEIOEHGO","b2_account_key":"sdifjsiodv7sdv7suivyhsfv7fvyhdfvb7d"}},{"name":"repository2","provider":"aws","url":"s3:s3.amazonaws.com/mybucket/mybackup","password":"45a1905ef8de3c03b05d47071754bd5ddbfec0edaa56d4c44f981386f3f24888","parameters":{"aws_default_region":"us-east-1","aws_access_key_id":"IEIEEHEHEW","aws_secret_access_key":"edfjksof798r7fsdfiougvf7df"}},{"name":"repository 3","provider":"digitalocean","password":"","url":"s3:ams3.digitaloceanspaces.com/mybucket/mybackup","parameters":{"aws_access_key_id":"XJEMERNGRIWGN","aws_secret_access_key":"897wergjkegher987geriugheruiger789"}},{"name":"repository 4","provider":"azure","password":"","url":"azure:mystorage","parameters":{"azure_account_name":"ns8backup","azure_account_key":"7lBkSMdy5LeYFyjcc0Szlxlc9GDaUFxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxOrplWQJuEBRD+AStiQnppg=="}},{"name":"repository 5","provider":"smb","password":"","url":"rclone::smb:myshare/subpath","parameters":{"rclone_smb_host":"10.114.0.2","rclone_smb_user":"backup-agent","rclone_smb_pass":"Nethesis,1234","rclone_smb_domain":"NTDOM"}},{"name":"repository 6","provider":"cluster","password":"","url":"webdav:http://10.5.4.2:4694","parameters":{}}],"type":"object","properties":{"provider":{"type":"string","title":"Repository provider","minLength":1},"name":{"title":"Backup repository name","type":"string"},"url":{"title":"Restic URL","description":"URL of the repository in restic format. Must be unique.","type":"string"},"password":{"title":"Encryption token","description":"Select the password for restic encryption. If this is empty the API will generate a random password","type":"string"},"parameters":{"type":"object","title":"Connection parameters"}},"required":["provider","name","url","password","parameters"],"anyOf":[{"allOf":[{"title":"BackBlaze schema","properties":{"provider":{"title":"BackBlaze provider","const":"backblaze"},"parameters":{"$ref":"#/$defs/b2_parameters"}}}]},{"allOf":[{"title":"S3-based provider schema","properties":{"provider":{"title":"S3 providers","enum":["aws","digitalocean","generic-s3"]},"parameters":{"$ref":"#/$defs/s3_parameters"}}}]},{"allOf":[{"title":"Azure schema","properties":{"provider":{"title":"Azure provider","const":"azure"},"parameters":{"$ref":"#/$defs/azure_parameters"}}}]},{"allOf":[{"title":"SMB schema","properties":{"provider":{"title":"SMB provider","const":"smb"},"url":{"pattern":"^smb:.+$"},"parameters":{"$ref":"#/$defs/smb_parameters"}}}]},{"allOf":[{"title":"Local storage","properties":{"provider":{"title":"Cluster internal provider","const":"cluster"},"url":{"pattern":"^webdav:.+$"},"parameters":{"$ref":"#/$defs/cluster_parameters"}}}]}],"$defs":{"b2_parameters":{"title":"B2 (Backblaze) protocol parameters","type":"object","required":["b2_account_id","b2_account_key"],"additionalProperties":false,"properties":{"b2_account_id":{"type":"string"},"b2_account_key":{"type":"string"}}},"s3_parameters":{"title":"S3 (Amazon AWS) protocol parameters","type":"object","required":["aws_access_key_id","aws_secret_access_key"],"additionalProperties":false,"properties":{"aws_default_region":{"type":"string"},"aws_access_key_id":{"type":"string"},"aws_secret_access_key":{"type":"string"}}},"azure_parameters":{"title":"Azure blob storage protocol parameters","type":"object","required":["azure_account_name","azure_account_key"],"additionalProperties":false,"properties":{"azure_account_name":{"type":"string"},"azure_account_key":{"type":"string"}}},"smb_parameters":{"title":"SMB Rclone parameters","type":"object","required":["smb_host","smb_user","smb_pass","smb_domain"],"additionalProperties":false,"properties":{"smb_host":{"type":"string","description":"Host name or IP address","format":"hostname","minLength":1},"smb_user":{"type":"string","description":"User name for share connection","minLength":1},"smb_pass":{"type":"string","description":"User password for share connection"},"smb_domain":{"type":"string","description":"The short form (NT-style) domain name"}}},"cluster_parameters":{"title":"Cluster-internal Rclone parameters","type":"object","additionalProperties":false,"properties":{}}}}
diff --git a/core/add-backup-repository-input.md b/core/add-backup-repository-input.md
new file mode 100644
index 000000000..5bb2d42ba
--- /dev/null
+++ b/core/add-backup-repository-input.md
@@ -0,0 +1,497 @@
+# add-backup-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-repository-input.json
+```
+
+Input schema of the add-backup-repository action
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [add-backup-repository-input.json](cluster/add-backup-repository-input.json "open original schema") |
+
+## add-backup-repository input Type
+
+`object` ([add-backup-repository input](add-backup-repository-input.md))
+
+any of
+
+* all of
+
+ * [BackBlaze schema](add-backup-repository-input-anyof-0-allof-backblaze-schema.md "check type definition")
+
+* all of
+
+ * [S3-based provider schema](add-backup-repository-input-anyof-1-allof-s3-based-provider-schema.md "check type definition")
+
+* all of
+
+ * [Azure schema](add-backup-repository-input-anyof-2-allof-azure-schema.md "check type definition")
+
+* all of
+
+ * [SMB schema](add-backup-repository-input-anyof-3-allof-smb-schema.md "check type definition")
+
+* all of
+
+ * [Local storage](add-backup-repository-input-anyof-4-allof-local-storage.md "check type definition")
+
+## add-backup-repository input Examples
+
+```json
+{
+ "name": "repository1",
+ "provider": "backblaze",
+ "url": "b2:mybucket/mybackup",
+ "password": "",
+ "parameters": {
+ "b2_account_id": "YEFYEIOEHGO",
+ "b2_account_key": "sdifjsiodv7sdv7suivyhsfv7fvyhdfvb7d"
+ }
+}
+```
+
+```json
+{
+ "name": "repository2",
+ "provider": "aws",
+ "url": "s3:s3.amazonaws.com/mybucket/mybackup",
+ "password": "45a1905ef8de3c03b05d47071754bd5ddbfec0edaa56d4c44f981386f3f24888",
+ "parameters": {
+ "aws_default_region": "us-east-1",
+ "aws_access_key_id": "IEIEEHEHEW",
+ "aws_secret_access_key": "edfjksof798r7fsdfiougvf7df"
+ }
+}
+```
+
+```json
+{
+ "name": "repository 3",
+ "provider": "digitalocean",
+ "password": "",
+ "url": "s3:ams3.digitaloceanspaces.com/mybucket/mybackup",
+ "parameters": {
+ "aws_access_key_id": "XJEMERNGRIWGN",
+ "aws_secret_access_key": "897wergjkegher987geriugheruiger789"
+ }
+}
+```
+
+```json
+{
+ "name": "repository 4",
+ "provider": "azure",
+ "password": "",
+ "url": "azure:mystorage",
+ "parameters": {
+ "azure_account_name": "ns8backup",
+ "azure_account_key": "7lBkSMdy5LeYFyjcc0Szlxlc9GDaUFxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxOrplWQJuEBRD+AStiQnppg=="
+ }
+}
+```
+
+```json
+{
+ "name": "repository 5",
+ "provider": "smb",
+ "password": "",
+ "url": "rclone::smb:myshare/subpath",
+ "parameters": {
+ "rclone_smb_host": "10.114.0.2",
+ "rclone_smb_user": "backup-agent",
+ "rclone_smb_pass": "Nethesis,1234",
+ "rclone_smb_domain": "NTDOM"
+ }
+}
+```
+
+```json
+{
+ "name": "repository 6",
+ "provider": "cluster",
+ "password": "",
+ "url": "webdav:http://10.5.4.2:4694",
+ "parameters": {}
+}
+```
+
+# add-backup-repository input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------ | :------- | :------- | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [provider](#provider) | `string` | Required | cannot be null | [add-backup-repository input](add-backup-repository-input-properties-repository-provider.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/properties/provider") |
+| [name](#name) | `string` | Required | cannot be null | [add-backup-repository input](add-backup-repository-input-properties-backup-repository-name.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/properties/name") |
+| [url](#url) | `string` | Required | cannot be null | [add-backup-repository input](add-backup-repository-input-properties-restic-url.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/properties/url") |
+| [password](#password) | `string` | Required | cannot be null | [add-backup-repository input](add-backup-repository-input-properties-encryption-token.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/properties/password") |
+| [parameters](#parameters) | `object` | Required | cannot be null | [add-backup-repository input](add-backup-repository-input-properties-connection-parameters.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/properties/parameters") |
+
+## provider
+
+
+
+`provider`
+
+* is required
+
+* Type: `string` ([Repository provider](add-backup-repository-input-properties-repository-provider.md))
+
+* cannot be null
+
+* defined in: [add-backup-repository input](add-backup-repository-input-properties-repository-provider.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/properties/provider")
+
+### provider Type
+
+`string` ([Repository provider](add-backup-repository-input-properties-repository-provider.md))
+
+### provider Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## name
+
+
+
+`name`
+
+* is required
+
+* Type: `string` ([Backup repository name](add-backup-repository-input-properties-backup-repository-name.md))
+
+* cannot be null
+
+* defined in: [add-backup-repository input](add-backup-repository-input-properties-backup-repository-name.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/properties/name")
+
+### name Type
+
+`string` ([Backup repository name](add-backup-repository-input-properties-backup-repository-name.md))
+
+## url
+
+URL of the repository in restic format. Must be unique.
+
+`url`
+
+* is required
+
+* Type: `string` ([Restic URL](add-backup-repository-input-properties-restic-url.md))
+
+* cannot be null
+
+* defined in: [add-backup-repository input](add-backup-repository-input-properties-restic-url.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/properties/url")
+
+### url Type
+
+`string` ([Restic URL](add-backup-repository-input-properties-restic-url.md))
+
+## password
+
+Select the password for restic encryption. If this is empty the API will generate a random password
+
+`password`
+
+* is required
+
+* Type: `string` ([Encryption token](add-backup-repository-input-properties-encryption-token.md))
+
+* cannot be null
+
+* defined in: [add-backup-repository input](add-backup-repository-input-properties-encryption-token.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/properties/password")
+
+### password Type
+
+`string` ([Encryption token](add-backup-repository-input-properties-encryption-token.md))
+
+## parameters
+
+
+
+`parameters`
+
+* is required
+
+* Type: `object` ([Connection parameters](add-backup-repository-input-properties-connection-parameters.md))
+
+* cannot be null
+
+* defined in: [add-backup-repository input](add-backup-repository-input-properties-connection-parameters.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/properties/parameters")
+
+### parameters Type
+
+`object` ([Connection parameters](add-backup-repository-input-properties-connection-parameters.md))
+
+# add-backup-repository input Definitions
+
+## Definitions group b2\_parameters
+
+Reference this group by using
+
+```json
+{"$ref":"http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/b2_parameters"}
+```
+
+| Property | Type | Required | Nullable | Defined by |
+| :---------------------------------- | :------- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [b2\_account\_id](#b2_account_id) | `string` | Required | cannot be null | [add-backup-repository input](add-backup-repository-input-defs-b2-backblaze-protocol-parameters-properties-b2_account_id.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/b2_parameters/properties/b2_account_id") |
+| [b2\_account\_key](#b2_account_key) | `string` | Required | cannot be null | [add-backup-repository input](add-backup-repository-input-defs-b2-backblaze-protocol-parameters-properties-b2_account_key.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/b2_parameters/properties/b2_account_key") |
+
+### b2\_account\_id
+
+
+
+`b2_account_id`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [add-backup-repository input](add-backup-repository-input-defs-b2-backblaze-protocol-parameters-properties-b2_account_id.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/b2_parameters/properties/b2_account_id")
+
+#### b2\_account\_id Type
+
+`string`
+
+### b2\_account\_key
+
+
+
+`b2_account_key`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [add-backup-repository input](add-backup-repository-input-defs-b2-backblaze-protocol-parameters-properties-b2_account_key.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/b2_parameters/properties/b2_account_key")
+
+#### b2\_account\_key Type
+
+`string`
+
+## Definitions group s3\_parameters
+
+Reference this group by using
+
+```json
+{"$ref":"http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/s3_parameters"}
+```
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------------------------------- | :------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| [aws\_default\_region](#aws_default_region) | `string` | Optional | cannot be null | [add-backup-repository input](add-backup-repository-input-defs-s3-amazon-aws-protocol-parameters-properties-aws_default_region.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/s3_parameters/properties/aws_default_region") |
+| [aws\_access\_key\_id](#aws_access_key_id) | `string` | Required | cannot be null | [add-backup-repository input](add-backup-repository-input-defs-s3-amazon-aws-protocol-parameters-properties-aws_access_key_id.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/s3_parameters/properties/aws_access_key_id") |
+| [aws\_secret\_access\_key](#aws_secret_access_key) | `string` | Required | cannot be null | [add-backup-repository input](add-backup-repository-input-defs-s3-amazon-aws-protocol-parameters-properties-aws_secret_access_key.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/s3_parameters/properties/aws_secret_access_key") |
+
+### aws\_default\_region
+
+
+
+`aws_default_region`
+
+* is optional
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [add-backup-repository input](add-backup-repository-input-defs-s3-amazon-aws-protocol-parameters-properties-aws_default_region.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/s3_parameters/properties/aws_default_region")
+
+#### aws\_default\_region Type
+
+`string`
+
+### aws\_access\_key\_id
+
+
+
+`aws_access_key_id`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [add-backup-repository input](add-backup-repository-input-defs-s3-amazon-aws-protocol-parameters-properties-aws_access_key_id.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/s3_parameters/properties/aws_access_key_id")
+
+#### aws\_access\_key\_id Type
+
+`string`
+
+### aws\_secret\_access\_key
+
+
+
+`aws_secret_access_key`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [add-backup-repository input](add-backup-repository-input-defs-s3-amazon-aws-protocol-parameters-properties-aws_secret_access_key.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/s3_parameters/properties/aws_secret_access_key")
+
+#### aws\_secret\_access\_key Type
+
+`string`
+
+## Definitions group azure\_parameters
+
+Reference this group by using
+
+```json
+{"$ref":"http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/azure_parameters"}
+```
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------------------------ | :------- | :------- | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [azure\_account\_name](#azure_account_name) | `string` | Required | cannot be null | [add-backup-repository input](add-backup-repository-input-defs-azure-blob-storage-protocol-parameters-properties-azure_account_name.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/azure_parameters/properties/azure_account_name") |
+| [azure\_account\_key](#azure_account_key) | `string` | Required | cannot be null | [add-backup-repository input](add-backup-repository-input-defs-azure-blob-storage-protocol-parameters-properties-azure_account_key.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/azure_parameters/properties/azure_account_key") |
+
+### azure\_account\_name
+
+
+
+`azure_account_name`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [add-backup-repository input](add-backup-repository-input-defs-azure-blob-storage-protocol-parameters-properties-azure_account_name.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/azure_parameters/properties/azure_account_name")
+
+#### azure\_account\_name Type
+
+`string`
+
+### azure\_account\_key
+
+
+
+`azure_account_key`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [add-backup-repository input](add-backup-repository-input-defs-azure-blob-storage-protocol-parameters-properties-azure_account_key.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/azure_parameters/properties/azure_account_key")
+
+#### azure\_account\_key Type
+
+`string`
+
+## Definitions group smb\_parameters
+
+Reference this group by using
+
+```json
+{"$ref":"http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/smb_parameters"}
+```
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------- | :------- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [smb\_host](#smb_host) | `string` | Required | cannot be null | [add-backup-repository input](add-backup-repository-input-defs-smb-rclone-parameters-properties-smb_host.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/smb_parameters/properties/smb_host") |
+| [smb\_user](#smb_user) | `string` | Required | cannot be null | [add-backup-repository input](add-backup-repository-input-defs-smb-rclone-parameters-properties-smb_user.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/smb_parameters/properties/smb_user") |
+| [smb\_pass](#smb_pass) | `string` | Required | cannot be null | [add-backup-repository input](add-backup-repository-input-defs-smb-rclone-parameters-properties-smb_pass.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/smb_parameters/properties/smb_pass") |
+| [smb\_domain](#smb_domain) | `string` | Required | cannot be null | [add-backup-repository input](add-backup-repository-input-defs-smb-rclone-parameters-properties-smb_domain.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/smb_parameters/properties/smb_domain") |
+
+### smb\_host
+
+Host name or IP address
+
+`smb_host`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [add-backup-repository input](add-backup-repository-input-defs-smb-rclone-parameters-properties-smb_host.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/smb_parameters/properties/smb_host")
+
+#### smb\_host Type
+
+`string`
+
+#### smb\_host Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+**hostname**: the string must be a hostname, according to [RFC 1123, section 2.1](https://tools.ietf.org/html/rfc1123 "check the specification")
+
+### smb\_user
+
+User name for share connection
+
+`smb_user`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [add-backup-repository input](add-backup-repository-input-defs-smb-rclone-parameters-properties-smb_user.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/smb_parameters/properties/smb_user")
+
+#### smb\_user Type
+
+`string`
+
+#### smb\_user Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+### smb\_pass
+
+User password for share connection
+
+`smb_pass`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [add-backup-repository input](add-backup-repository-input-defs-smb-rclone-parameters-properties-smb_pass.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/smb_parameters/properties/smb_pass")
+
+#### smb\_pass Type
+
+`string`
+
+### smb\_domain
+
+The short form (NT-style) domain name
+
+`smb_domain`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [add-backup-repository input](add-backup-repository-input-defs-smb-rclone-parameters-properties-smb_domain.md "http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/smb_parameters/properties/smb_domain")
+
+#### smb\_domain Type
+
+`string`
+
+## Definitions group cluster\_parameters
+
+Reference this group by using
+
+```json
+{"$ref":"http://schema.nethserver.org/cluster/add-backup-repository-input.json#/$defs/cluster_parameters"}
+```
+
+| Property | Type | Required | Nullable | Defined by |
+| :------- | :--- | :------- | :------- | :--------- |
diff --git a/core/add-backup-repository-output-properties-generated-random-password.md b/core/add-backup-repository-output-properties-generated-random-password.md
new file mode 100644
index 000000000..50bb8d6c2
--- /dev/null
+++ b/core/add-backup-repository-output-properties-generated-random-password.md
@@ -0,0 +1,15 @@
+# Generated random password Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-repository-output.json#/properties/password
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-backup-repository-output.json\*](cluster/add-backup-repository-output.json "open original schema") |
+
+## password Type
+
+`string` ([Generated random password](add-backup-repository-output-properties-generated-random-password.md))
diff --git a/core/add-backup-repository-output-properties-identifier-of-the-added-repository.md b/core/add-backup-repository-output-properties-identifier-of-the-added-repository.md
new file mode 100644
index 000000000..04b4eb799
--- /dev/null
+++ b/core/add-backup-repository-output-properties-identifier-of-the-added-repository.md
@@ -0,0 +1,15 @@
+# Identifier of the added repository Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-repository-output.json#/properties/id
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-backup-repository-output.json\*](cluster/add-backup-repository-output.json "open original schema") |
+
+## id Type
+
+`string` ([Identifier of the added repository](add-backup-repository-output-properties-identifier-of-the-added-repository.md))
diff --git a/core/add-backup-repository-output.json b/core/add-backup-repository-output.json
new file mode 100644
index 000000000..4e2f99282
--- /dev/null
+++ b/core/add-backup-repository-output.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"add-backup-repository output","$id":"http://schema.nethserver.org/cluster/add-backup-repository-output.json","description":"Output schema of the add-backup-repository action","examples":[{"password":"55cdf59499dc1b5c625c8e20682f7c34302790767c2a13abd20d4289db0feca6","id":"ce712dfe-b1d0-47f1-a149-a14d1203aab8"}],"type":"object","properties":{"id":{"title":"Identifier of the added repository","type":"string"},"password":{"title":"Generated random password","type":"string"}},"required":["id","password"]}
diff --git a/core/add-backup-repository-output.md b/core/add-backup-repository-output.md
new file mode 100644
index 000000000..106555fe3
--- /dev/null
+++ b/core/add-backup-repository-output.md
@@ -0,0 +1,67 @@
+# add-backup-repository output Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-backup-repository-output.json
+```
+
+Output schema of the add-backup-repository action
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [add-backup-repository-output.json](cluster/add-backup-repository-output.json "open original schema") |
+
+## add-backup-repository output Type
+
+`object` ([add-backup-repository output](add-backup-repository-output.md))
+
+## add-backup-repository output Examples
+
+```json
+{
+ "password": "55cdf59499dc1b5c625c8e20682f7c34302790767c2a13abd20d4289db0feca6",
+ "id": "ce712dfe-b1d0-47f1-a149-a14d1203aab8"
+}
+```
+
+# add-backup-repository output Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :-------------------- | :------- | :------- | :------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [id](#id) | `string` | Required | cannot be null | [add-backup-repository output](add-backup-repository-output-properties-identifier-of-the-added-repository.md "http://schema.nethserver.org/cluster/add-backup-repository-output.json#/properties/id") |
+| [password](#password) | `string` | Required | cannot be null | [add-backup-repository output](add-backup-repository-output-properties-generated-random-password.md "http://schema.nethserver.org/cluster/add-backup-repository-output.json#/properties/password") |
+
+## id
+
+
+
+`id`
+
+* is required
+
+* Type: `string` ([Identifier of the added repository](add-backup-repository-output-properties-identifier-of-the-added-repository.md))
+
+* cannot be null
+
+* defined in: [add-backup-repository output](add-backup-repository-output-properties-identifier-of-the-added-repository.md "http://schema.nethserver.org/cluster/add-backup-repository-output.json#/properties/id")
+
+### id Type
+
+`string` ([Identifier of the added repository](add-backup-repository-output-properties-identifier-of-the-added-repository.md))
+
+## password
+
+
+
+`password`
+
+* is required
+
+* Type: `string` ([Generated random password](add-backup-repository-output-properties-generated-random-password.md))
+
+* cannot be null
+
+* defined in: [add-backup-repository output](add-backup-repository-output-properties-generated-random-password.md "http://schema.nethserver.org/cluster/add-backup-repository-output.json#/properties/password")
+
+### password Type
+
+`string` ([Generated random password](add-backup-repository-output-properties-generated-random-password.md))
diff --git a/core/add-custom-zone-input-properties-firewall-ports-configuration.md b/core/add-custom-zone-input-properties-firewall-ports-configuration.md
new file mode 100644
index 000000000..403c3a0b0
--- /dev/null
+++ b/core/add-custom-zone-input-properties-firewall-ports-configuration.md
@@ -0,0 +1,33 @@
+# Firewall ports configuration Schema
+
+```txt
+http://schema.nethserver.org/node/add-custom-zone-input.json#/properties/ports
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-custom-zone-input.json\*](node/add-custom-zone-input.json "open original schema") |
+
+## ports Type
+
+`array` ([Firewall ports configuration](add-custom-zone-input-properties-firewall-ports-configuration.md))
+
+## ports Constraints
+
+**minimum number of items**: the minimum number of items for this array is: `1`
+
+## ports Examples
+
+```json
+"25/tcp"
+```
+
+```json
+"21/udp"
+```
+
+```json
+"9000-9010/tcp"
+```
diff --git a/core/add-custom-zone-input-properties-firewall-rich-rules.md b/core/add-custom-zone-input-properties-firewall-rich-rules.md
new file mode 100644
index 000000000..341619d42
--- /dev/null
+++ b/core/add-custom-zone-input-properties-firewall-rich-rules.md
@@ -0,0 +1,25 @@
+# Firewall rich rules Schema
+
+```txt
+http://schema.nethserver.org/node/add-custom-zone-input.json#/properties/rules
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-custom-zone-input.json\*](node/add-custom-zone-input.json "open original schema") |
+
+## rules Type
+
+`array` ([Firewall rich rules](add-custom-zone-input-properties-firewall-rich-rules.md))
+
+## rules Constraints
+
+**minimum number of items**: the minimum number of items for this array is: `1`
+
+## rules Examples
+
+```json
+"rule family=ipv4 source address=172.18.212.1 destination address=172.18.212.0/24 accept"
+```
diff --git a/core/add-custom-zone-input-properties-interface-name-to-be-added-inside-the-zone.md b/core/add-custom-zone-input-properties-interface-name-to-be-added-inside-the-zone.md
new file mode 100644
index 000000000..2e1eac109
--- /dev/null
+++ b/core/add-custom-zone-input-properties-interface-name-to-be-added-inside-the-zone.md
@@ -0,0 +1,19 @@
+# Interface name to be added inside the zone Schema
+
+```txt
+http://schema.nethserver.org/node/add-custom-zone-input.json#/properties/interface
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-custom-zone-input.json\*](node/add-custom-zone-input.json "open original schema") |
+
+## interface Type
+
+`string` ([Interface name to be added inside the zone](add-custom-zone-input-properties-interface-name-to-be-added-inside-the-zone.md))
+
+## interface Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/add-custom-zone-input-properties-zone-name.md b/core/add-custom-zone-input-properties-zone-name.md
new file mode 100644
index 000000000..54a869de3
--- /dev/null
+++ b/core/add-custom-zone-input-properties-zone-name.md
@@ -0,0 +1,19 @@
+# Zone name Schema
+
+```txt
+http://schema.nethserver.org/node/add-custom-zone-input.json#/properties/zone
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-custom-zone-input.json\*](node/add-custom-zone-input.json "open original schema") |
+
+## zone Type
+
+`string` ([Zone name](add-custom-zone-input-properties-zone-name.md))
+
+## zone Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/add-custom-zone-input.json b/core/add-custom-zone-input.json
new file mode 100644
index 000000000..4adeee2e1
--- /dev/null
+++ b/core/add-custom-zone-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"add-custom-zone input","$id":"http://schema.nethserver.org/node/add-custom-zone-input.json","description":"Add firewall configuration for a custom zone","examples":[{"zone":"myzone","interface":"eth0","ports":["25/tcp"],"rules":["rule family=ipv4 source address=172.18.212.0/24 destination address=172.18.212.0/24 reject"]}],"type":"object","required":["zone","interface","ports"],"properties":{"zone":{"type":"string","title":"Zone name","minLength":1},"interface":{"type":"string","title":"Interface name to be added inside the zone","minLength":1},"ports":{"type":"array","title":"Firewall ports configuration","examples":["25/tcp","21/udp","9000-9010/tcp"],"minItems":1},"rules":{"type":"array","title":"Firewall rich rules","examples":["rule family=ipv4 source address=172.18.212.1 destination address=172.18.212.0/24 accept"],"minItems":1}}}
diff --git a/core/add-custom-zone-input.md b/core/add-custom-zone-input.md
new file mode 100644
index 000000000..4bd62da4f
--- /dev/null
+++ b/core/add-custom-zone-input.md
@@ -0,0 +1,147 @@
+# add-custom-zone input Schema
+
+```txt
+http://schema.nethserver.org/node/add-custom-zone-input.json
+```
+
+Add firewall configuration for a custom zone
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :----------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [add-custom-zone-input.json](node/add-custom-zone-input.json "open original schema") |
+
+## add-custom-zone input Type
+
+`object` ([add-custom-zone input](add-custom-zone-input.md))
+
+## add-custom-zone input Examples
+
+```json
+{
+ "zone": "myzone",
+ "interface": "eth0",
+ "ports": [
+ "25/tcp"
+ ],
+ "rules": [
+ "rule family=ipv4 source address=172.18.212.0/24 destination address=172.18.212.0/24 reject"
+ ]
+}
+```
+
+# add-custom-zone input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :---------------------- | :------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [zone](#zone) | `string` | Required | cannot be null | [add-custom-zone input](add-custom-zone-input-properties-zone-name.md "http://schema.nethserver.org/node/add-custom-zone-input.json#/properties/zone") |
+| [interface](#interface) | `string` | Required | cannot be null | [add-custom-zone input](add-custom-zone-input-properties-interface-name-to-be-added-inside-the-zone.md "http://schema.nethserver.org/node/add-custom-zone-input.json#/properties/interface") |
+| [ports](#ports) | `array` | Required | cannot be null | [add-custom-zone input](add-custom-zone-input-properties-firewall-ports-configuration.md "http://schema.nethserver.org/node/add-custom-zone-input.json#/properties/ports") |
+| [rules](#rules) | `array` | Optional | cannot be null | [add-custom-zone input](add-custom-zone-input-properties-firewall-rich-rules.md "http://schema.nethserver.org/node/add-custom-zone-input.json#/properties/rules") |
+
+## zone
+
+
+
+`zone`
+
+* is required
+
+* Type: `string` ([Zone name](add-custom-zone-input-properties-zone-name.md))
+
+* cannot be null
+
+* defined in: [add-custom-zone input](add-custom-zone-input-properties-zone-name.md "http://schema.nethserver.org/node/add-custom-zone-input.json#/properties/zone")
+
+### zone Type
+
+`string` ([Zone name](add-custom-zone-input-properties-zone-name.md))
+
+### zone Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## interface
+
+
+
+`interface`
+
+* is required
+
+* Type: `string` ([Interface name to be added inside the zone](add-custom-zone-input-properties-interface-name-to-be-added-inside-the-zone.md))
+
+* cannot be null
+
+* defined in: [add-custom-zone input](add-custom-zone-input-properties-interface-name-to-be-added-inside-the-zone.md "http://schema.nethserver.org/node/add-custom-zone-input.json#/properties/interface")
+
+### interface Type
+
+`string` ([Interface name to be added inside the zone](add-custom-zone-input-properties-interface-name-to-be-added-inside-the-zone.md))
+
+### interface Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## ports
+
+
+
+`ports`
+
+* is required
+
+* Type: `array` ([Firewall ports configuration](add-custom-zone-input-properties-firewall-ports-configuration.md))
+
+* cannot be null
+
+* defined in: [add-custom-zone input](add-custom-zone-input-properties-firewall-ports-configuration.md "http://schema.nethserver.org/node/add-custom-zone-input.json#/properties/ports")
+
+### ports Type
+
+`array` ([Firewall ports configuration](add-custom-zone-input-properties-firewall-ports-configuration.md))
+
+### ports Constraints
+
+**minimum number of items**: the minimum number of items for this array is: `1`
+
+### ports Examples
+
+```json
+"25/tcp"
+```
+
+```json
+"21/udp"
+```
+
+```json
+"9000-9010/tcp"
+```
+
+## rules
+
+
+
+`rules`
+
+* is optional
+
+* Type: `array` ([Firewall rich rules](add-custom-zone-input-properties-firewall-rich-rules.md))
+
+* cannot be null
+
+* defined in: [add-custom-zone input](add-custom-zone-input-properties-firewall-rich-rules.md "http://schema.nethserver.org/node/add-custom-zone-input.json#/properties/rules")
+
+### rules Type
+
+`array` ([Firewall rich rules](add-custom-zone-input-properties-firewall-rich-rules.md))
+
+### rules Constraints
+
+**minimum number of items**: the minimum number of items for this array is: `1`
+
+### rules Examples
+
+```json
+"rule family=ipv4 source address=172.18.212.1 destination address=172.18.212.0/24 accept"
+```
diff --git a/core/add-external-domain-input-anyof-0-protocol-property-is-ldap-properties-protocol.md b/core/add-external-domain-input-anyof-0-protocol-property-is-ldap-properties-protocol.md
new file mode 100644
index 000000000..f698248f2
--- /dev/null
+++ b/core/add-external-domain-input-anyof-0-protocol-property-is-ldap-properties-protocol.md
@@ -0,0 +1,23 @@
+# Untitled string in add-external-domain input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-external-domain-input.json#/anyOf/0/not/properties/protocol
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-external-domain-input.json\*](cluster/add-external-domain-input.json "open original schema") |
+
+## protocol Type
+
+`string`
+
+## protocol Constraints
+
+**constant**: the value of this property must be equal to:
+
+```json
+"ldap"
+```
diff --git a/core/add-external-domain-input-anyof-0-protocol-property-is-ldap.md b/core/add-external-domain-input-anyof-0-protocol-property-is-ldap.md
new file mode 100644
index 000000000..19bc6e7fe
--- /dev/null
+++ b/core/add-external-domain-input-anyof-0-protocol-property-is-ldap.md
@@ -0,0 +1,47 @@
+# Protocol property is ldap Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-external-domain-input.json#/anyOf/0/not
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [add-external-domain-input.json\*](cluster/add-external-domain-input.json "open original schema") |
+
+## not Type
+
+`object` ([Protocol property is ldap](add-external-domain-input-anyof-0-protocol-property-is-ldap.md))
+
+# not Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :-------------------- | :------- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [protocol](#protocol) | `string` | Optional | cannot be null | [add-external-domain input](add-external-domain-input-anyof-0-protocol-property-is-ldap-properties-protocol.md "http://schema.nethserver.org/cluster/add-external-domain-input.json#/anyOf/0/not/properties/protocol") |
+
+## protocol
+
+
+
+`protocol`
+
+* is optional
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [add-external-domain input](add-external-domain-input-anyof-0-protocol-property-is-ldap-properties-protocol.md "http://schema.nethserver.org/cluster/add-external-domain-input.json#/anyOf/0/not/properties/protocol")
+
+### protocol Type
+
+`string`
+
+### protocol Constraints
+
+**constant**: the value of this property must be equal to:
+
+```json
+"ldap"
+```
diff --git a/core/add-external-domain-input-anyof-0.md b/core/add-external-domain-input-anyof-0.md
new file mode 100644
index 000000000..3250682ab
--- /dev/null
+++ b/core/add-external-domain-input-anyof-0.md
@@ -0,0 +1,19 @@
+# Untitled undefined type in add-external-domain input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-external-domain-input.json#/anyOf/0
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-external-domain-input.json\*](cluster/add-external-domain-input.json "open original schema") |
+
+## 0 Type
+
+merged type ([Details](add-external-domain-input-anyof-0.md))
+
+not
+
+* [Protocol property is ldap](add-external-domain-input-anyof-0-protocol-property-is-ldap.md "check type definition")
diff --git a/core/add-external-domain-input-anyof-ldap-specific-subschemas.md b/core/add-external-domain-input-anyof-ldap-specific-subschemas.md
new file mode 100644
index 000000000..c112490b5
--- /dev/null
+++ b/core/add-external-domain-input-anyof-ldap-specific-subschemas.md
@@ -0,0 +1,21 @@
+# LDAP-specific subschemas Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-external-domain-input.json#/anyOf/1
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-external-domain-input.json\*](cluster/add-external-domain-input.json "open original schema") |
+
+## 1 Type
+
+`object` ([LDAP-specific subschemas](add-external-domain-input-anyof-ldap-specific-subschemas.md))
+
+all of
+
+* [TCP service endpoint](add-external-domain-input-defs-tcp-service-endpoint.md "check type definition")
+
+* [LDAP domain properties](add-external-domain-input-defs-ldap-domain-properties.md "check type definition")
diff --git a/core/add-external-domain-input-defs-ldap-domain-properties-properties-base-dn.md b/core/add-external-domain-input-defs-ldap-domain-properties-properties-base-dn.md
new file mode 100644
index 000000000..04b988366
--- /dev/null
+++ b/core/add-external-domain-input-defs-ldap-domain-properties-properties-base-dn.md
@@ -0,0 +1,15 @@
+# Base DN Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-external-domain-input.json#/$defs/additional-properties-of-ldap/properties/base_dn
+```
+
+The LDAP base DN is probed automatically if the value is `""` (empty string)
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-external-domain-input.json\*](cluster/add-external-domain-input.json "open original schema") |
+
+## base\_dn Type
+
+`string` ([Base DN](add-external-domain-input-defs-ldap-domain-properties-properties-base-dn.md))
diff --git a/core/add-external-domain-input-defs-ldap-domain-properties-properties-bind_dn.md b/core/add-external-domain-input-defs-ldap-domain-properties-properties-bind_dn.md
new file mode 100644
index 000000000..5658f3f92
--- /dev/null
+++ b/core/add-external-domain-input-defs-ldap-domain-properties-properties-bind_dn.md
@@ -0,0 +1,19 @@
+# Untitled string in add-external-domain input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-external-domain-input.json#/$defs/additional-properties-of-ldap/properties/bind_dn
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-external-domain-input.json\*](cluster/add-external-domain-input.json "open original schema") |
+
+## bind\_dn Type
+
+`string`
+
+## bind\_dn Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/add-external-domain-input-defs-ldap-domain-properties-properties-bind_password.md b/core/add-external-domain-input-defs-ldap-domain-properties-properties-bind_password.md
new file mode 100644
index 000000000..c31d595eb
--- /dev/null
+++ b/core/add-external-domain-input-defs-ldap-domain-properties-properties-bind_password.md
@@ -0,0 +1,19 @@
+# Untitled string in add-external-domain input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-external-domain-input.json#/$defs/additional-properties-of-ldap/properties/bind_password
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-external-domain-input.json\*](cluster/add-external-domain-input.json "open original schema") |
+
+## bind\_password Type
+
+`string`
+
+## bind\_password Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/add-external-domain-input-defs-ldap-domain-properties-properties-ldap-database-schema.md b/core/add-external-domain-input-defs-ldap-domain-properties-properties-ldap-database-schema.md
new file mode 100644
index 000000000..adb32632e
--- /dev/null
+++ b/core/add-external-domain-input-defs-ldap-domain-properties-properties-ldap-database-schema.md
@@ -0,0 +1,24 @@
+# LDAP database schema Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-external-domain-input.json#/$defs/additional-properties-of-ldap/properties/schema
+```
+
+The LDAP schema is probed automatically if the value is `null` or the property is missing
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-external-domain-input.json\*](cluster/add-external-domain-input.json "open original schema") |
+
+## schema Type
+
+`string` ([LDAP database schema](add-external-domain-input-defs-ldap-domain-properties-properties-ldap-database-schema.md))
+
+## schema Constraints
+
+**enum**: the value of this property must be equal to one of the following values:
+
+| Value | Explanation |
+| :---------- | :---------- |
+| `"ad"` | |
+| `"rfc2307"` | |
diff --git a/core/add-external-domain-input-defs-ldap-domain-properties-properties-tls.md b/core/add-external-domain-input-defs-ldap-domain-properties-properties-tls.md
new file mode 100644
index 000000000..f58e18055
--- /dev/null
+++ b/core/add-external-domain-input-defs-ldap-domain-properties-properties-tls.md
@@ -0,0 +1,15 @@
+# Untitled boolean in add-external-domain input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-external-domain-input.json#/$defs/additional-properties-of-ldap/properties/tls
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-external-domain-input.json\*](cluster/add-external-domain-input.json "open original schema") |
+
+## tls Type
+
+`boolean`
diff --git a/core/add-external-domain-input-defs-ldap-domain-properties-properties-tls_verify.md b/core/add-external-domain-input-defs-ldap-domain-properties-properties-tls_verify.md
new file mode 100644
index 000000000..cdb941fd1
--- /dev/null
+++ b/core/add-external-domain-input-defs-ldap-domain-properties-properties-tls_verify.md
@@ -0,0 +1,15 @@
+# Untitled boolean in add-external-domain input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-external-domain-input.json#/$defs/additional-properties-of-ldap/properties/tls_verify
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-external-domain-input.json\*](cluster/add-external-domain-input.json "open original schema") |
+
+## tls\_verify Type
+
+`boolean`
diff --git a/core/add-external-domain-input-defs-ldap-domain-properties.md b/core/add-external-domain-input-defs-ldap-domain-properties.md
new file mode 100644
index 000000000..070bf9b75
--- /dev/null
+++ b/core/add-external-domain-input-defs-ldap-domain-properties.md
@@ -0,0 +1,151 @@
+# LDAP domain properties Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-external-domain-input.json#/$defs/additional-properties-of-ldap
+```
+
+Additional required properties of LDAP-based domains
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [add-external-domain-input.json\*](cluster/add-external-domain-input.json "open original schema") |
+
+## additional-properties-of-ldap Type
+
+`object` ([LDAP domain properties](add-external-domain-input-defs-ldap-domain-properties.md))
+
+# additional-properties-of-ldap Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------------- | :-------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [schema](#schema) | `string` | Optional | can be null | [add-external-domain input](add-external-domain-input-defs-ldap-domain-properties-properties-ldap-database-schema.md "http://schema.nethserver.org/cluster/add-external-domain-input.json#/$defs/additional-properties-of-ldap/properties/schema") |
+| [base\_dn](#base_dn) | `string` | Required | cannot be null | [add-external-domain input](add-external-domain-input-defs-ldap-domain-properties-properties-base-dn.md "http://schema.nethserver.org/cluster/add-external-domain-input.json#/$defs/additional-properties-of-ldap/properties/base_dn") |
+| [bind\_dn](#bind_dn) | `string` | Required | cannot be null | [add-external-domain input](add-external-domain-input-defs-ldap-domain-properties-properties-bind_dn.md "http://schema.nethserver.org/cluster/add-external-domain-input.json#/$defs/additional-properties-of-ldap/properties/bind_dn") |
+| [bind\_password](#bind_password) | `string` | Required | cannot be null | [add-external-domain input](add-external-domain-input-defs-ldap-domain-properties-properties-bind_password.md "http://schema.nethserver.org/cluster/add-external-domain-input.json#/$defs/additional-properties-of-ldap/properties/bind_password") |
+| [tls](#tls) | `boolean` | Required | cannot be null | [add-external-domain input](add-external-domain-input-defs-ldap-domain-properties-properties-tls.md "http://schema.nethserver.org/cluster/add-external-domain-input.json#/$defs/additional-properties-of-ldap/properties/tls") |
+| [tls\_verify](#tls_verify) | `boolean` | Required | cannot be null | [add-external-domain input](add-external-domain-input-defs-ldap-domain-properties-properties-tls_verify.md "http://schema.nethserver.org/cluster/add-external-domain-input.json#/$defs/additional-properties-of-ldap/properties/tls_verify") |
+
+## schema
+
+The LDAP schema is probed automatically if the value is `null` or the property is missing
+
+`schema`
+
+* is optional
+
+* Type: `string` ([LDAP database schema](add-external-domain-input-defs-ldap-domain-properties-properties-ldap-database-schema.md))
+
+* can be null
+
+* defined in: [add-external-domain input](add-external-domain-input-defs-ldap-domain-properties-properties-ldap-database-schema.md "http://schema.nethserver.org/cluster/add-external-domain-input.json#/$defs/additional-properties-of-ldap/properties/schema")
+
+### schema Type
+
+`string` ([LDAP database schema](add-external-domain-input-defs-ldap-domain-properties-properties-ldap-database-schema.md))
+
+### schema Constraints
+
+**enum**: the value of this property must be equal to one of the following values:
+
+| Value | Explanation |
+| :---------- | :---------- |
+| `"ad"` | |
+| `"rfc2307"` | |
+
+## base\_dn
+
+The LDAP base DN is probed automatically if the value is `""` (empty string)
+
+`base_dn`
+
+* is required
+
+* Type: `string` ([Base DN](add-external-domain-input-defs-ldap-domain-properties-properties-base-dn.md))
+
+* cannot be null
+
+* defined in: [add-external-domain input](add-external-domain-input-defs-ldap-domain-properties-properties-base-dn.md "http://schema.nethserver.org/cluster/add-external-domain-input.json#/$defs/additional-properties-of-ldap/properties/base_dn")
+
+### base\_dn Type
+
+`string` ([Base DN](add-external-domain-input-defs-ldap-domain-properties-properties-base-dn.md))
+
+## bind\_dn
+
+
+
+`bind_dn`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [add-external-domain input](add-external-domain-input-defs-ldap-domain-properties-properties-bind_dn.md "http://schema.nethserver.org/cluster/add-external-domain-input.json#/$defs/additional-properties-of-ldap/properties/bind_dn")
+
+### bind\_dn Type
+
+`string`
+
+### bind\_dn Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## bind\_password
+
+
+
+`bind_password`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [add-external-domain input](add-external-domain-input-defs-ldap-domain-properties-properties-bind_password.md "http://schema.nethserver.org/cluster/add-external-domain-input.json#/$defs/additional-properties-of-ldap/properties/bind_password")
+
+### bind\_password Type
+
+`string`
+
+### bind\_password Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## tls
+
+
+
+`tls`
+
+* is required
+
+* Type: `boolean`
+
+* cannot be null
+
+* defined in: [add-external-domain input](add-external-domain-input-defs-ldap-domain-properties-properties-tls.md "http://schema.nethserver.org/cluster/add-external-domain-input.json#/$defs/additional-properties-of-ldap/properties/tls")
+
+### tls Type
+
+`boolean`
+
+## tls\_verify
+
+
+
+`tls_verify`
+
+* is required
+
+* Type: `boolean`
+
+* cannot be null
+
+* defined in: [add-external-domain input](add-external-domain-input-defs-ldap-domain-properties-properties-tls_verify.md "http://schema.nethserver.org/cluster/add-external-domain-input.json#/$defs/additional-properties-of-ldap/properties/tls_verify")
+
+### tls\_verify Type
+
+`boolean`
diff --git a/core/add-external-domain-input-defs-tcp-service-endpoint-properties-host-oneof-0.md b/core/add-external-domain-input-defs-tcp-service-endpoint-properties-host-oneof-0.md
new file mode 100644
index 000000000..7ead3e04f
--- /dev/null
+++ b/core/add-external-domain-input-defs-tcp-service-endpoint-properties-host-oneof-0.md
@@ -0,0 +1,19 @@
+# Untitled undefined type in add-external-domain input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-external-domain-input.json#/$defs/tcp-service-endpoint/properties/host/oneOf/0
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-external-domain-input.json\*](cluster/add-external-domain-input.json "open original schema") |
+
+## 0 Type
+
+unknown
+
+## 0 Constraints
+
+**hostname**: the string must be a hostname, according to [RFC 1123, section 2.1](https://tools.ietf.org/html/rfc1123 "check the specification")
diff --git a/core/add-external-domain-input-defs-tcp-service-endpoint-properties-host-oneof-1.md b/core/add-external-domain-input-defs-tcp-service-endpoint-properties-host-oneof-1.md
new file mode 100644
index 000000000..edc21250a
--- /dev/null
+++ b/core/add-external-domain-input-defs-tcp-service-endpoint-properties-host-oneof-1.md
@@ -0,0 +1,19 @@
+# Untitled undefined type in add-external-domain input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-external-domain-input.json#/$defs/tcp-service-endpoint/properties/host/oneOf/1
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-external-domain-input.json\*](cluster/add-external-domain-input.json "open original schema") |
+
+## 1 Type
+
+unknown
+
+## 1 Constraints
+
+**IPv6**: the string must be an IPv6 address, according to [RFC 4291, section 2.2](https://tools.ietf.org/html/rfc4291 "check the specification")
diff --git a/core/add-external-domain-input-defs-tcp-service-endpoint-properties-host.md b/core/add-external-domain-input-defs-tcp-service-endpoint-properties-host.md
new file mode 100644
index 000000000..8ac399b2d
--- /dev/null
+++ b/core/add-external-domain-input-defs-tcp-service-endpoint-properties-host.md
@@ -0,0 +1,21 @@
+# Untitled string in add-external-domain input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-external-domain-input.json#/$defs/tcp-service-endpoint/properties/host
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-external-domain-input.json\*](cluster/add-external-domain-input.json "open original schema") |
+
+## host Type
+
+`string` ([Details](add-external-domain-input-defs-tcp-service-endpoint-properties-host.md))
+
+one (and only one) of
+
+* [Untitled undefined type in add-external-domain input](add-external-domain-input-defs-tcp-service-endpoint-properties-host-oneof-0.md "check type definition")
+
+* [Untitled undefined type in add-external-domain input](add-external-domain-input-defs-tcp-service-endpoint-properties-host-oneof-1.md "check type definition")
diff --git a/core/add-external-domain-input-defs-tcp-service-endpoint-properties-port.md b/core/add-external-domain-input-defs-tcp-service-endpoint-properties-port.md
new file mode 100644
index 000000000..7d7b9f07f
--- /dev/null
+++ b/core/add-external-domain-input-defs-tcp-service-endpoint-properties-port.md
@@ -0,0 +1,21 @@
+# Untitled integer in add-external-domain input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-external-domain-input.json#/$defs/tcp-service-endpoint/properties/port
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-external-domain-input.json\*](cluster/add-external-domain-input.json "open original schema") |
+
+## port Type
+
+`integer`
+
+## port Constraints
+
+**maximum**: the value of this number must smaller than or equal to: `65535`
+
+**minimum**: the value of this number must greater than or equal to: `1`
diff --git a/core/add-external-domain-input-defs-tcp-service-endpoint.md b/core/add-external-domain-input-defs-tcp-service-endpoint.md
new file mode 100644
index 000000000..92e1aab86
--- /dev/null
+++ b/core/add-external-domain-input-defs-tcp-service-endpoint.md
@@ -0,0 +1,70 @@
+# TCP service endpoint Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-external-domain-input.json#/$defs/tcp-service-endpoint
+```
+
+Initial TCP backend endpoint configuration
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [add-external-domain-input.json\*](cluster/add-external-domain-input.json "open original schema") |
+
+## tcp-service-endpoint Type
+
+`object` ([TCP service endpoint](add-external-domain-input-defs-tcp-service-endpoint.md))
+
+# tcp-service-endpoint Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------ | :-------- | :------- | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [host](#host) | Merged | Required | cannot be null | [add-external-domain input](add-external-domain-input-defs-tcp-service-endpoint-properties-host.md "http://schema.nethserver.org/cluster/add-external-domain-input.json#/$defs/tcp-service-endpoint/properties/host") |
+| [port](#port) | `integer` | Required | cannot be null | [add-external-domain input](add-external-domain-input-defs-tcp-service-endpoint-properties-port.md "http://schema.nethserver.org/cluster/add-external-domain-input.json#/$defs/tcp-service-endpoint/properties/port") |
+
+## host
+
+
+
+`host`
+
+* is required
+
+* Type: `string` ([Details](add-external-domain-input-defs-tcp-service-endpoint-properties-host.md))
+
+* cannot be null
+
+* defined in: [add-external-domain input](add-external-domain-input-defs-tcp-service-endpoint-properties-host.md "http://schema.nethserver.org/cluster/add-external-domain-input.json#/$defs/tcp-service-endpoint/properties/host")
+
+### host Type
+
+`string` ([Details](add-external-domain-input-defs-tcp-service-endpoint-properties-host.md))
+
+one (and only one) of
+
+* [Untitled undefined type in add-external-domain input](add-external-domain-input-defs-tcp-service-endpoint-properties-host-oneof-0.md "check type definition")
+
+* [Untitled undefined type in add-external-domain input](add-external-domain-input-defs-tcp-service-endpoint-properties-host-oneof-1.md "check type definition")
+
+## port
+
+
+
+`port`
+
+* is required
+
+* Type: `integer`
+
+* cannot be null
+
+* defined in: [add-external-domain input](add-external-domain-input-defs-tcp-service-endpoint-properties-port.md "http://schema.nethserver.org/cluster/add-external-domain-input.json#/$defs/tcp-service-endpoint/properties/port")
+
+### port Type
+
+`integer`
+
+### port Constraints
+
+**maximum**: the value of this number must smaller than or equal to: `65535`
+
+**minimum**: the value of this number must greater than or equal to: `1`
diff --git a/core/add-external-domain-input-defs.md b/core/add-external-domain-input-defs.md
new file mode 100644
index 000000000..6d83abd69
--- /dev/null
+++ b/core/add-external-domain-input-defs.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in add-external-domain input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-external-domain-input.json#/$defs
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-external-domain-input.json\*](cluster/add-external-domain-input.json "open original schema") |
+
+## $defs Type
+
+unknown
diff --git a/core/add-external-domain-input-properties-provider-protocol.md b/core/add-external-domain-input-properties-provider-protocol.md
new file mode 100644
index 000000000..7783c5a25
--- /dev/null
+++ b/core/add-external-domain-input-properties-provider-protocol.md
@@ -0,0 +1,23 @@
+# Provider protocol Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-external-domain-input.json#/properties/protocol
+```
+
+Protocol used to communicate with the domain providers.
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-external-domain-input.json\*](cluster/add-external-domain-input.json "open original schema") |
+
+## protocol Type
+
+`string` ([Provider protocol](add-external-domain-input-properties-provider-protocol.md))
+
+## protocol Constraints
+
+**enum**: the value of this property must be equal to one of the following values:
+
+| Value | Explanation |
+| :------- | :---------- |
+| `"ldap"` | |
diff --git a/core/add-external-domain-input-properties-user-domain-name.md b/core/add-external-domain-input-properties-user-domain-name.md
new file mode 100644
index 000000000..0461426a6
--- /dev/null
+++ b/core/add-external-domain-input-properties-user-domain-name.md
@@ -0,0 +1,19 @@
+# User domain name Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-external-domain-input.json#/properties/domain
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-external-domain-input.json\*](cluster/add-external-domain-input.json "open original schema") |
+
+## domain Type
+
+`string` ([User domain name](add-external-domain-input-properties-user-domain-name.md))
+
+## domain Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/add-external-domain-input.json b/core/add-external-domain-input.json
new file mode 100644
index 000000000..13ec709a2
--- /dev/null
+++ b/core/add-external-domain-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"add-external-domain input","description":"Configure an external user domain","$id":"http://schema.nethserver.org/cluster/add-external-domain-input.json","examples":[{"domain":"example.com","protocol":"ldap","host":"18.19.20.21","port":636,"schema":"rfc2307","bind_dn":"cn=ldapservice,dc=example,dc=com","bind_password":"s3cret","base_dn":"dc=example,dc=com","tls":true,"tls_verify":true}],"type":"object","required":["domain","protocol"],"properties":{"domain":{"type":"string","title":"User domain name","minLength":1},"protocol":{"type":"string","title":"Provider protocol","description":"Protocol used to communicate with the domain providers.","enum":["ldap"]}},"anyOf":[{"not":{"type":"object","title":"Protocol property is ldap","properties":{"protocol":{"type":"string","const":"ldap"}}}},{"type":"object","title":"LDAP-specific subschemas","allOf":[{"$ref":"#/$defs/tcp-service-endpoint"},{"$ref":"#/$defs/additional-properties-of-ldap"}]}],"$defs":{"tcp-service-endpoint":{"type":"object","title":"TCP service endpoint","description":"Initial TCP backend endpoint configuration","properties":{"host":{"type":"string","oneOf":[{"format":"hostname"},{"format":"ipv6"}]},"port":{"type":"integer","minimum":1,"maximum":65535}},"required":["host","port"]},"additional-properties-of-ldap":{"type":"object","title":"LDAP domain properties","description":"Additional required properties of LDAP-based domains","properties":{"schema":{"type":["string","null"],"title":"LDAP database schema","description":"The LDAP schema is probed automatically if the value is `null` or the property is missing","enum":["ad","rfc2307"]},"base_dn":{"title":"Base DN","description":"The LDAP base DN is probed automatically if the value is `\"\"` (empty string)","type":"string"},"bind_dn":{"type":"string","minLength":1},"bind_password":{"type":"string","minLength":1},"tls":{"type":"boolean"},"tls_verify":{"type":"boolean"}},"required":["base_dn","bind_dn","bind_password","tls","tls_verify"]}}}
diff --git a/core/add-external-domain-input.md b/core/add-external-domain-input.md
new file mode 100644
index 000000000..4eaedd337
--- /dev/null
+++ b/core/add-external-domain-input.md
@@ -0,0 +1,304 @@
+# add-external-domain input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-external-domain-input.json
+```
+
+Configure an external user domain
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [add-external-domain-input.json](cluster/add-external-domain-input.json "open original schema") |
+
+## add-external-domain input Type
+
+`object` ([add-external-domain input](add-external-domain-input.md))
+
+any of
+
+* not
+
+ * [Protocol property is ldap](add-external-domain-input-anyof-0-protocol-property-is-ldap.md "check type definition")
+
+* all of
+
+ * [TCP service endpoint](add-external-domain-input-defs-tcp-service-endpoint.md "check type definition")
+
+ * [LDAP domain properties](add-external-domain-input-defs-ldap-domain-properties.md "check type definition")
+
+## add-external-domain input Examples
+
+```json
+{
+ "domain": "example.com",
+ "protocol": "ldap",
+ "host": "18.19.20.21",
+ "port": 636,
+ "schema": "rfc2307",
+ "bind_dn": "cn=ldapservice,dc=example,dc=com",
+ "bind_password": "s3cret",
+ "base_dn": "dc=example,dc=com",
+ "tls": true,
+ "tls_verify": true
+}
+```
+
+# add-external-domain input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :-------------------- | :------- | :------- | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [domain](#domain) | `string` | Required | cannot be null | [add-external-domain input](add-external-domain-input-properties-user-domain-name.md "http://schema.nethserver.org/cluster/add-external-domain-input.json#/properties/domain") |
+| [protocol](#protocol) | `string` | Required | cannot be null | [add-external-domain input](add-external-domain-input-properties-provider-protocol.md "http://schema.nethserver.org/cluster/add-external-domain-input.json#/properties/protocol") |
+
+## domain
+
+
+
+`domain`
+
+* is required
+
+* Type: `string` ([User domain name](add-external-domain-input-properties-user-domain-name.md))
+
+* cannot be null
+
+* defined in: [add-external-domain input](add-external-domain-input-properties-user-domain-name.md "http://schema.nethserver.org/cluster/add-external-domain-input.json#/properties/domain")
+
+### domain Type
+
+`string` ([User domain name](add-external-domain-input-properties-user-domain-name.md))
+
+### domain Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## protocol
+
+Protocol used to communicate with the domain providers.
+
+`protocol`
+
+* is required
+
+* Type: `string` ([Provider protocol](add-external-domain-input-properties-provider-protocol.md))
+
+* cannot be null
+
+* defined in: [add-external-domain input](add-external-domain-input-properties-provider-protocol.md "http://schema.nethserver.org/cluster/add-external-domain-input.json#/properties/protocol")
+
+### protocol Type
+
+`string` ([Provider protocol](add-external-domain-input-properties-provider-protocol.md))
+
+### protocol Constraints
+
+**enum**: the value of this property must be equal to one of the following values:
+
+| Value | Explanation |
+| :------- | :---------- |
+| `"ldap"` | |
+
+# add-external-domain input Definitions
+
+## Definitions group tcp-service-endpoint
+
+Reference this group by using
+
+```json
+{"$ref":"http://schema.nethserver.org/cluster/add-external-domain-input.json#/$defs/tcp-service-endpoint"}
+```
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------ | :-------- | :------- | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [host](#host) | Merged | Required | cannot be null | [add-external-domain input](add-external-domain-input-defs-tcp-service-endpoint-properties-host.md "http://schema.nethserver.org/cluster/add-external-domain-input.json#/$defs/tcp-service-endpoint/properties/host") |
+| [port](#port) | `integer` | Required | cannot be null | [add-external-domain input](add-external-domain-input-defs-tcp-service-endpoint-properties-port.md "http://schema.nethserver.org/cluster/add-external-domain-input.json#/$defs/tcp-service-endpoint/properties/port") |
+
+### host
+
+
+
+`host`
+
+* is required
+
+* Type: `string` ([Details](add-external-domain-input-defs-tcp-service-endpoint-properties-host.md))
+
+* cannot be null
+
+* defined in: [add-external-domain input](add-external-domain-input-defs-tcp-service-endpoint-properties-host.md "http://schema.nethserver.org/cluster/add-external-domain-input.json#/$defs/tcp-service-endpoint/properties/host")
+
+#### host Type
+
+`string` ([Details](add-external-domain-input-defs-tcp-service-endpoint-properties-host.md))
+
+one (and only one) of
+
+* [Untitled undefined type in add-external-domain input](add-external-domain-input-defs-tcp-service-endpoint-properties-host-oneof-0.md "check type definition")
+
+* [Untitled undefined type in add-external-domain input](add-external-domain-input-defs-tcp-service-endpoint-properties-host-oneof-1.md "check type definition")
+
+### port
+
+
+
+`port`
+
+* is required
+
+* Type: `integer`
+
+* cannot be null
+
+* defined in: [add-external-domain input](add-external-domain-input-defs-tcp-service-endpoint-properties-port.md "http://schema.nethserver.org/cluster/add-external-domain-input.json#/$defs/tcp-service-endpoint/properties/port")
+
+#### port Type
+
+`integer`
+
+#### port Constraints
+
+**maximum**: the value of this number must smaller than or equal to: `65535`
+
+**minimum**: the value of this number must greater than or equal to: `1`
+
+## Definitions group additional-properties-of-ldap
+
+Reference this group by using
+
+```json
+{"$ref":"http://schema.nethserver.org/cluster/add-external-domain-input.json#/$defs/additional-properties-of-ldap"}
+```
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------------- | :-------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [schema](#schema) | `string` | Optional | can be null | [add-external-domain input](add-external-domain-input-defs-ldap-domain-properties-properties-ldap-database-schema.md "http://schema.nethserver.org/cluster/add-external-domain-input.json#/$defs/additional-properties-of-ldap/properties/schema") |
+| [base\_dn](#base_dn) | `string` | Required | cannot be null | [add-external-domain input](add-external-domain-input-defs-ldap-domain-properties-properties-base-dn.md "http://schema.nethserver.org/cluster/add-external-domain-input.json#/$defs/additional-properties-of-ldap/properties/base_dn") |
+| [bind\_dn](#bind_dn) | `string` | Required | cannot be null | [add-external-domain input](add-external-domain-input-defs-ldap-domain-properties-properties-bind_dn.md "http://schema.nethserver.org/cluster/add-external-domain-input.json#/$defs/additional-properties-of-ldap/properties/bind_dn") |
+| [bind\_password](#bind_password) | `string` | Required | cannot be null | [add-external-domain input](add-external-domain-input-defs-ldap-domain-properties-properties-bind_password.md "http://schema.nethserver.org/cluster/add-external-domain-input.json#/$defs/additional-properties-of-ldap/properties/bind_password") |
+| [tls](#tls) | `boolean` | Required | cannot be null | [add-external-domain input](add-external-domain-input-defs-ldap-domain-properties-properties-tls.md "http://schema.nethserver.org/cluster/add-external-domain-input.json#/$defs/additional-properties-of-ldap/properties/tls") |
+| [tls\_verify](#tls_verify) | `boolean` | Required | cannot be null | [add-external-domain input](add-external-domain-input-defs-ldap-domain-properties-properties-tls_verify.md "http://schema.nethserver.org/cluster/add-external-domain-input.json#/$defs/additional-properties-of-ldap/properties/tls_verify") |
+
+### schema
+
+The LDAP schema is probed automatically if the value is `null` or the property is missing
+
+`schema`
+
+* is optional
+
+* Type: `string` ([LDAP database schema](add-external-domain-input-defs-ldap-domain-properties-properties-ldap-database-schema.md))
+
+* can be null
+
+* defined in: [add-external-domain input](add-external-domain-input-defs-ldap-domain-properties-properties-ldap-database-schema.md "http://schema.nethserver.org/cluster/add-external-domain-input.json#/$defs/additional-properties-of-ldap/properties/schema")
+
+#### schema Type
+
+`string` ([LDAP database schema](add-external-domain-input-defs-ldap-domain-properties-properties-ldap-database-schema.md))
+
+#### schema Constraints
+
+**enum**: the value of this property must be equal to one of the following values:
+
+| Value | Explanation |
+| :---------- | :---------- |
+| `"ad"` | |
+| `"rfc2307"` | |
+
+### base\_dn
+
+The LDAP base DN is probed automatically if the value is `""` (empty string)
+
+`base_dn`
+
+* is required
+
+* Type: `string` ([Base DN](add-external-domain-input-defs-ldap-domain-properties-properties-base-dn.md))
+
+* cannot be null
+
+* defined in: [add-external-domain input](add-external-domain-input-defs-ldap-domain-properties-properties-base-dn.md "http://schema.nethserver.org/cluster/add-external-domain-input.json#/$defs/additional-properties-of-ldap/properties/base_dn")
+
+#### base\_dn Type
+
+`string` ([Base DN](add-external-domain-input-defs-ldap-domain-properties-properties-base-dn.md))
+
+### bind\_dn
+
+
+
+`bind_dn`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [add-external-domain input](add-external-domain-input-defs-ldap-domain-properties-properties-bind_dn.md "http://schema.nethserver.org/cluster/add-external-domain-input.json#/$defs/additional-properties-of-ldap/properties/bind_dn")
+
+#### bind\_dn Type
+
+`string`
+
+#### bind\_dn Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+### bind\_password
+
+
+
+`bind_password`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [add-external-domain input](add-external-domain-input-defs-ldap-domain-properties-properties-bind_password.md "http://schema.nethserver.org/cluster/add-external-domain-input.json#/$defs/additional-properties-of-ldap/properties/bind_password")
+
+#### bind\_password Type
+
+`string`
+
+#### bind\_password Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+### tls
+
+
+
+`tls`
+
+* is required
+
+* Type: `boolean`
+
+* cannot be null
+
+* defined in: [add-external-domain input](add-external-domain-input-defs-ldap-domain-properties-properties-tls.md "http://schema.nethserver.org/cluster/add-external-domain-input.json#/$defs/additional-properties-of-ldap/properties/tls")
+
+#### tls Type
+
+`boolean`
+
+### tls\_verify
+
+
+
+`tls_verify`
+
+* is required
+
+* Type: `boolean`
+
+* cannot be null
+
+* defined in: [add-external-domain input](add-external-domain-input-defs-ldap-domain-properties-properties-tls_verify.md "http://schema.nethserver.org/cluster/add-external-domain-input.json#/$defs/additional-properties-of-ldap/properties/tls_verify")
+
+#### tls\_verify Type
+
+`boolean`
diff --git a/core/add-external-provider-input-anyof-0-protocol-property-is-ldap-properties-protocol.md b/core/add-external-provider-input-anyof-0-protocol-property-is-ldap-properties-protocol.md
new file mode 100644
index 000000000..afb709583
--- /dev/null
+++ b/core/add-external-provider-input-anyof-0-protocol-property-is-ldap-properties-protocol.md
@@ -0,0 +1,23 @@
+# Untitled string in add-external-provider input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-external-provider-input.json#/anyOf/0/not/properties/protocol
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-external-provider-input.json\*](cluster/add-external-provider-input.json "open original schema") |
+
+## protocol Type
+
+`string`
+
+## protocol Constraints
+
+**constant**: the value of this property must be equal to:
+
+```json
+"ldap"
+```
diff --git a/core/add-external-provider-input-anyof-0-protocol-property-is-ldap.md b/core/add-external-provider-input-anyof-0-protocol-property-is-ldap.md
new file mode 100644
index 000000000..fbdaf4e5e
--- /dev/null
+++ b/core/add-external-provider-input-anyof-0-protocol-property-is-ldap.md
@@ -0,0 +1,47 @@
+# Protocol property is ldap Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-external-provider-input.json#/anyOf/0/not
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [add-external-provider-input.json\*](cluster/add-external-provider-input.json "open original schema") |
+
+## not Type
+
+`object` ([Protocol property is ldap](add-external-provider-input-anyof-0-protocol-property-is-ldap.md))
+
+# not Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :-------------------- | :------- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [protocol](#protocol) | `string` | Optional | cannot be null | [add-external-provider input](add-external-provider-input-anyof-0-protocol-property-is-ldap-properties-protocol.md "http://schema.nethserver.org/cluster/add-external-provider-input.json#/anyOf/0/not/properties/protocol") |
+
+## protocol
+
+
+
+`protocol`
+
+* is optional
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [add-external-provider input](add-external-provider-input-anyof-0-protocol-property-is-ldap-properties-protocol.md "http://schema.nethserver.org/cluster/add-external-provider-input.json#/anyOf/0/not/properties/protocol")
+
+### protocol Type
+
+`string`
+
+### protocol Constraints
+
+**constant**: the value of this property must be equal to:
+
+```json
+"ldap"
+```
diff --git a/core/add-external-provider-input-anyof-0.md b/core/add-external-provider-input-anyof-0.md
new file mode 100644
index 000000000..3c96f82a1
--- /dev/null
+++ b/core/add-external-provider-input-anyof-0.md
@@ -0,0 +1,19 @@
+# Untitled undefined type in add-external-provider input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-external-provider-input.json#/anyOf/0
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-external-provider-input.json\*](cluster/add-external-provider-input.json "open original schema") |
+
+## 0 Type
+
+merged type ([Details](add-external-provider-input-anyof-0.md))
+
+not
+
+* [Protocol property is ldap](add-external-provider-input-anyof-0-protocol-property-is-ldap.md "check type definition")
diff --git a/core/add-external-provider-input-defs-tcp-service-endpoint-properties-host.md b/core/add-external-provider-input-defs-tcp-service-endpoint-properties-host.md
new file mode 100644
index 000000000..2b3bab22f
--- /dev/null
+++ b/core/add-external-provider-input-defs-tcp-service-endpoint-properties-host.md
@@ -0,0 +1,15 @@
+# Untitled string in add-external-provider input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-external-provider-input.json#/$defs/tcp-service-endpoint/properties/host
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-external-provider-input.json\*](cluster/add-external-provider-input.json "open original schema") |
+
+## host Type
+
+`string`
diff --git a/core/add-external-provider-input-defs-tcp-service-endpoint-properties-port.md b/core/add-external-provider-input-defs-tcp-service-endpoint-properties-port.md
new file mode 100644
index 000000000..5dd6450e0
--- /dev/null
+++ b/core/add-external-provider-input-defs-tcp-service-endpoint-properties-port.md
@@ -0,0 +1,21 @@
+# Untitled integer in add-external-provider input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-external-provider-input.json#/$defs/tcp-service-endpoint/properties/port
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-external-provider-input.json\*](cluster/add-external-provider-input.json "open original schema") |
+
+## port Type
+
+`integer`
+
+## port Constraints
+
+**maximum**: the value of this number must smaller than or equal to: `65535`
+
+**minimum**: the value of this number must greater than or equal to: `1`
diff --git a/core/add-external-provider-input-defs-tcp-service-endpoint.md b/core/add-external-provider-input-defs-tcp-service-endpoint.md
new file mode 100644
index 000000000..3d58ffd75
--- /dev/null
+++ b/core/add-external-provider-input-defs-tcp-service-endpoint.md
@@ -0,0 +1,64 @@
+# TCP service endpoint Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-external-provider-input.json#/$defs/tcp-service-endpoint
+```
+
+Initial TCP backend endpoint configuration
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [add-external-provider-input.json\*](cluster/add-external-provider-input.json "open original schema") |
+
+## tcp-service-endpoint Type
+
+`object` ([TCP service endpoint](add-external-provider-input-defs-tcp-service-endpoint.md))
+
+# tcp-service-endpoint Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------ | :-------- | :------- | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [host](#host) | `string` | Required | cannot be null | [add-external-provider input](add-external-provider-input-defs-tcp-service-endpoint-properties-host.md "http://schema.nethserver.org/cluster/add-external-provider-input.json#/$defs/tcp-service-endpoint/properties/host") |
+| [port](#port) | `integer` | Required | cannot be null | [add-external-provider input](add-external-provider-input-defs-tcp-service-endpoint-properties-port.md "http://schema.nethserver.org/cluster/add-external-provider-input.json#/$defs/tcp-service-endpoint/properties/port") |
+
+## host
+
+
+
+`host`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [add-external-provider input](add-external-provider-input-defs-tcp-service-endpoint-properties-host.md "http://schema.nethserver.org/cluster/add-external-provider-input.json#/$defs/tcp-service-endpoint/properties/host")
+
+### host Type
+
+`string`
+
+## port
+
+
+
+`port`
+
+* is required
+
+* Type: `integer`
+
+* cannot be null
+
+* defined in: [add-external-provider input](add-external-provider-input-defs-tcp-service-endpoint-properties-port.md "http://schema.nethserver.org/cluster/add-external-provider-input.json#/$defs/tcp-service-endpoint/properties/port")
+
+### port Type
+
+`integer`
+
+### port Constraints
+
+**maximum**: the value of this number must smaller than or equal to: `65535`
+
+**minimum**: the value of this number must greater than or equal to: `1`
diff --git a/core/add-external-provider-input-defs.md b/core/add-external-provider-input-defs.md
new file mode 100644
index 000000000..317b1ffcc
--- /dev/null
+++ b/core/add-external-provider-input-defs.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in add-external-provider input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-external-provider-input.json#/$defs
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-external-provider-input.json\*](cluster/add-external-provider-input.json "open original schema") |
+
+## $defs Type
+
+unknown
diff --git a/core/add-external-provider-input-properties-provider-protocol.md b/core/add-external-provider-input-properties-provider-protocol.md
new file mode 100644
index 000000000..5d050e6ab
--- /dev/null
+++ b/core/add-external-provider-input-properties-provider-protocol.md
@@ -0,0 +1,23 @@
+# Provider protocol Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-external-provider-input.json#/properties/protocol
+```
+
+Protocol used to communicate with the domain providers.
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-external-provider-input.json\*](cluster/add-external-provider-input.json "open original schema") |
+
+## protocol Type
+
+`string` ([Provider protocol](add-external-provider-input-properties-provider-protocol.md))
+
+## protocol Constraints
+
+**enum**: the value of this property must be equal to one of the following values:
+
+| Value | Explanation |
+| :------- | :---------- |
+| `"ldap"` | |
diff --git a/core/add-external-provider-input-properties-user-domain-name.md b/core/add-external-provider-input-properties-user-domain-name.md
new file mode 100644
index 000000000..975df07c7
--- /dev/null
+++ b/core/add-external-provider-input-properties-user-domain-name.md
@@ -0,0 +1,19 @@
+# User domain name Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-external-provider-input.json#/properties/domain
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-external-provider-input.json\*](cluster/add-external-provider-input.json "open original schema") |
+
+## domain Type
+
+`string` ([User domain name](add-external-provider-input-properties-user-domain-name.md))
+
+## domain Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/add-external-provider-input.json b/core/add-external-provider-input.json
new file mode 100644
index 000000000..014403d87
--- /dev/null
+++ b/core/add-external-provider-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"add-external-provider input","description":"Add a provider to an already configured external user domain","$id":"http://schema.nethserver.org/cluster/add-external-provider-input.json","examples":[{"domain":"example.com","protocol":"ldap","host":"ldap2.example.com","port":636}],"type":"object","required":["domain","protocol"],"properties":{"domain":{"type":"string","title":"User domain name","minLength":1},"protocol":{"type":"string","title":"Provider protocol","description":"Protocol used to communicate with the domain providers.","enum":["ldap"]}},"anyOf":[{"not":{"type":"object","title":"Protocol property is ldap","properties":{"protocol":{"type":"string","const":"ldap"}}}},{"$ref":"#/$defs/tcp-service-endpoint"}],"$defs":{"tcp-service-endpoint":{"type":"object","title":"TCP service endpoint","description":"Initial TCP backend endpoint configuration","properties":{"host":{"type":"string"},"port":{"type":"integer","minimum":1,"maximum":65535}},"required":["host","port"]}}}
diff --git a/core/add-external-provider-input.md b/core/add-external-provider-input.md
new file mode 100644
index 000000000..056fa518e
--- /dev/null
+++ b/core/add-external-provider-input.md
@@ -0,0 +1,146 @@
+# add-external-provider input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-external-provider-input.json
+```
+
+Add a provider to an already configured external user domain
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [add-external-provider-input.json](cluster/add-external-provider-input.json "open original schema") |
+
+## add-external-provider input Type
+
+`object` ([add-external-provider input](add-external-provider-input.md))
+
+any of
+
+* not
+
+ * [Protocol property is ldap](add-external-provider-input-anyof-0-protocol-property-is-ldap.md "check type definition")
+
+* [TCP service endpoint](add-external-provider-input-defs-tcp-service-endpoint.md "check type definition")
+
+## add-external-provider input Examples
+
+```json
+{
+ "domain": "example.com",
+ "protocol": "ldap",
+ "host": "ldap2.example.com",
+ "port": 636
+}
+```
+
+# add-external-provider input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :-------------------- | :------- | :------- | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [domain](#domain) | `string` | Required | cannot be null | [add-external-provider input](add-external-provider-input-properties-user-domain-name.md "http://schema.nethserver.org/cluster/add-external-provider-input.json#/properties/domain") |
+| [protocol](#protocol) | `string` | Required | cannot be null | [add-external-provider input](add-external-provider-input-properties-provider-protocol.md "http://schema.nethserver.org/cluster/add-external-provider-input.json#/properties/protocol") |
+
+## domain
+
+
+
+`domain`
+
+* is required
+
+* Type: `string` ([User domain name](add-external-provider-input-properties-user-domain-name.md))
+
+* cannot be null
+
+* defined in: [add-external-provider input](add-external-provider-input-properties-user-domain-name.md "http://schema.nethserver.org/cluster/add-external-provider-input.json#/properties/domain")
+
+### domain Type
+
+`string` ([User domain name](add-external-provider-input-properties-user-domain-name.md))
+
+### domain Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## protocol
+
+Protocol used to communicate with the domain providers.
+
+`protocol`
+
+* is required
+
+* Type: `string` ([Provider protocol](add-external-provider-input-properties-provider-protocol.md))
+
+* cannot be null
+
+* defined in: [add-external-provider input](add-external-provider-input-properties-provider-protocol.md "http://schema.nethserver.org/cluster/add-external-provider-input.json#/properties/protocol")
+
+### protocol Type
+
+`string` ([Provider protocol](add-external-provider-input-properties-provider-protocol.md))
+
+### protocol Constraints
+
+**enum**: the value of this property must be equal to one of the following values:
+
+| Value | Explanation |
+| :------- | :---------- |
+| `"ldap"` | |
+
+# add-external-provider input Definitions
+
+## Definitions group tcp-service-endpoint
+
+Reference this group by using
+
+```json
+{"$ref":"http://schema.nethserver.org/cluster/add-external-provider-input.json#/$defs/tcp-service-endpoint"}
+```
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------ | :-------- | :------- | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [host](#host) | `string` | Required | cannot be null | [add-external-provider input](add-external-provider-input-defs-tcp-service-endpoint-properties-host.md "http://schema.nethserver.org/cluster/add-external-provider-input.json#/$defs/tcp-service-endpoint/properties/host") |
+| [port](#port) | `integer` | Required | cannot be null | [add-external-provider input](add-external-provider-input-defs-tcp-service-endpoint-properties-port.md "http://schema.nethserver.org/cluster/add-external-provider-input.json#/$defs/tcp-service-endpoint/properties/port") |
+
+### host
+
+
+
+`host`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [add-external-provider input](add-external-provider-input-defs-tcp-service-endpoint-properties-host.md "http://schema.nethserver.org/cluster/add-external-provider-input.json#/$defs/tcp-service-endpoint/properties/host")
+
+#### host Type
+
+`string`
+
+### port
+
+
+
+`port`
+
+* is required
+
+* Type: `integer`
+
+* cannot be null
+
+* defined in: [add-external-provider input](add-external-provider-input-defs-tcp-service-endpoint-properties-port.md "http://schema.nethserver.org/cluster/add-external-provider-input.json#/$defs/tcp-service-endpoint/properties/port")
+
+#### port Type
+
+`integer`
+
+#### port Constraints
+
+**maximum**: the value of this number must smaller than or equal to: `65535`
+
+**minimum**: the value of this number must greater than or equal to: `1`
diff --git a/core/add-favorite-input-properties-instance.md b/core/add-favorite-input-properties-instance.md
new file mode 100644
index 000000000..87d5aa3d3
--- /dev/null
+++ b/core/add-favorite-input-properties-instance.md
@@ -0,0 +1,15 @@
+# Untitled string in add-favorite input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-favorite-input.json#/properties/instance
+```
+
+Instance name
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-favorite-input.json\*](cluster/add-favorite-input.json "open original schema") |
+
+## instance Type
+
+`string`
diff --git a/core/add-favorite-input.json b/core/add-favorite-input.json
new file mode 100644
index 000000000..e9bf29db7
--- /dev/null
+++ b/core/add-favorite-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"add-favorite input","$id":"http://schema.nethserver.org/cluster/add-favorite-input.json","description":"Input schema of the add-favorite action","examples":[{"instance":"dokuwiki1"}],"type":"object","properties":{"instance":{"description":"Instance name","type":"string"}},"required":["instance"]}
diff --git a/core/add-favorite-input.md b/core/add-favorite-input.md
new file mode 100644
index 000000000..198b3b268
--- /dev/null
+++ b/core/add-favorite-input.md
@@ -0,0 +1,47 @@
+# add-favorite input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-favorite-input.json
+```
+
+Input schema of the add-favorite action
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [add-favorite-input.json](cluster/add-favorite-input.json "open original schema") |
+
+## add-favorite input Type
+
+`object` ([add-favorite input](add-favorite-input.md))
+
+## add-favorite input Examples
+
+```json
+{
+ "instance": "dokuwiki1"
+}
+```
+
+# add-favorite input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :-------------------- | :------- | :------- | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [instance](#instance) | `string` | Required | cannot be null | [add-favorite input](add-favorite-input-properties-instance.md "http://schema.nethserver.org/cluster/add-favorite-input.json#/properties/instance") |
+
+## instance
+
+Instance name
+
+`instance`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [add-favorite input](add-favorite-input-properties-instance.md "http://schema.nethserver.org/cluster/add-favorite-input.json#/properties/instance")
+
+### instance Type
+
+`string`
diff --git a/core/add-favorite-output.json b/core/add-favorite-output.json
new file mode 100644
index 000000000..2ac1093e4
--- /dev/null
+++ b/core/add-favorite-output.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"add-favorite output","$id":"http://schema.nethserver.org/cluster/add-favorite-output.json","description":"Output schema of the add-favorite action","examples":[true],"type":"boolean"}
diff --git a/core/add-favorite-output.md b/core/add-favorite-output.md
new file mode 100644
index 000000000..5f07b209a
--- /dev/null
+++ b/core/add-favorite-output.md
@@ -0,0 +1,21 @@
+# add-favorite output Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-favorite-output.json
+```
+
+Output schema of the add-favorite action
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-favorite-output.json](cluster/add-favorite-output.json "open original schema") |
+
+## add-favorite output Type
+
+`boolean` ([add-favorite output](add-favorite-output.md))
+
+## add-favorite output Examples
+
+```json
+true
+```
diff --git a/core/add-internal-provider-input-defs.md b/core/add-internal-provider-input-defs.md
new file mode 100644
index 000000000..40f8bda7f
--- /dev/null
+++ b/core/add-internal-provider-input-defs.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in add-internal-provider input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-internal-provider-input.json#/$defs
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-internal-provider-input.json\*](cluster/add-internal-provider-input.json "open original schema") |
+
+## $defs Type
+
+unknown
diff --git a/core/add-internal-provider-input-properties-domain.md b/core/add-internal-provider-input-properties-domain.md
new file mode 100644
index 000000000..5ba435304
--- /dev/null
+++ b/core/add-internal-provider-input-properties-domain.md
@@ -0,0 +1,19 @@
+# Domain Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-internal-provider-input.json#/properties/domain
+```
+
+Add the instance to an already existing domain. This field is optional.
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-internal-provider-input.json\*](cluster/add-internal-provider-input.json "open original schema") |
+
+## domain Type
+
+`string` ([Domain](add-internal-provider-input-properties-domain.md))
+
+## domain Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/add-internal-provider-input-properties-module-image-url.md b/core/add-internal-provider-input-properties-module-image-url.md
new file mode 100644
index 000000000..432a17a9f
--- /dev/null
+++ b/core/add-internal-provider-input-properties-module-image-url.md
@@ -0,0 +1,19 @@
+# Module image URL Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-internal-provider-input.json#/properties/image
+```
+
+URL of the module image to install
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-internal-provider-input.json\*](cluster/add-internal-provider-input.json "open original schema") |
+
+## image Type
+
+`string` ([Module image URL](add-internal-provider-input-properties-module-image-url.md))
+
+## image Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/add-internal-provider-input-properties-node-id.md b/core/add-internal-provider-input-properties-node-id.md
new file mode 100644
index 000000000..b1e758dd1
--- /dev/null
+++ b/core/add-internal-provider-input-properties-node-id.md
@@ -0,0 +1,19 @@
+# Node ID Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-internal-provider-input.json#/properties/node
+```
+
+Node identifier where the module has to be installed
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-internal-provider-input.json\*](cluster/add-internal-provider-input.json "open original schema") |
+
+## node Type
+
+`integer` ([Node ID](add-internal-provider-input-properties-node-id.md))
+
+## node Constraints
+
+**minimum**: the value of this number must greater than or equal to: `1`
diff --git a/core/add-internal-provider-input.json b/core/add-internal-provider-input.json
new file mode 100644
index 000000000..4fa2f5dad
--- /dev/null
+++ b/core/add-internal-provider-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"add-internal-provider input","description":"Add a provider instance for a new or already existing internal user domain","$id":"http://schema.nethserver.org/cluster/add-internal-provider-input.json","examples":[{"image":"ghcr.io/nethserver/samba:v1.0.0","node":2},{"image":"ghcr.io/nethserver/samba:v1.0.0","node":1,"domain":"ad.example.com"}],"type":"object","required":["image","node"],"properties":{"image":{"title":"Module image URL","description":"URL of the module image to install","type":"string","minLength":1},"node":{"title":"Node ID","description":"Node identifier where the module has to be installed","type":"integer","minimum":1},"domain":{"title":"Domain","description":"Add the instance to an already existing domain. This field is optional.","type":["string","null"],"minLength":1}},"$defs":{}}
diff --git a/core/add-internal-provider-input.md b/core/add-internal-provider-input.md
new file mode 100644
index 000000000..902364483
--- /dev/null
+++ b/core/add-internal-provider-input.md
@@ -0,0 +1,108 @@
+# add-internal-provider input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-internal-provider-input.json
+```
+
+Add a provider instance for a new or already existing internal user domain
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [add-internal-provider-input.json](cluster/add-internal-provider-input.json "open original schema") |
+
+## add-internal-provider input Type
+
+`object` ([add-internal-provider input](add-internal-provider-input.md))
+
+## add-internal-provider input Examples
+
+```json
+{
+ "image": "ghcr.io/nethserver/samba:v1.0.0",
+ "node": 2
+}
+```
+
+```json
+{
+ "image": "ghcr.io/nethserver/samba:v1.0.0",
+ "node": 1,
+ "domain": "ad.example.com"
+}
+```
+
+# add-internal-provider input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :---------------- | :-------- | :------- | :------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [image](#image) | `string` | Required | cannot be null | [add-internal-provider input](add-internal-provider-input-properties-module-image-url.md "http://schema.nethserver.org/cluster/add-internal-provider-input.json#/properties/image") |
+| [node](#node) | `integer` | Required | cannot be null | [add-internal-provider input](add-internal-provider-input-properties-node-id.md "http://schema.nethserver.org/cluster/add-internal-provider-input.json#/properties/node") |
+| [domain](#domain) | `string` | Optional | can be null | [add-internal-provider input](add-internal-provider-input-properties-domain.md "http://schema.nethserver.org/cluster/add-internal-provider-input.json#/properties/domain") |
+
+## image
+
+URL of the module image to install
+
+`image`
+
+* is required
+
+* Type: `string` ([Module image URL](add-internal-provider-input-properties-module-image-url.md))
+
+* cannot be null
+
+* defined in: [add-internal-provider input](add-internal-provider-input-properties-module-image-url.md "http://schema.nethserver.org/cluster/add-internal-provider-input.json#/properties/image")
+
+### image Type
+
+`string` ([Module image URL](add-internal-provider-input-properties-module-image-url.md))
+
+### image Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## node
+
+Node identifier where the module has to be installed
+
+`node`
+
+* is required
+
+* Type: `integer` ([Node ID](add-internal-provider-input-properties-node-id.md))
+
+* cannot be null
+
+* defined in: [add-internal-provider input](add-internal-provider-input-properties-node-id.md "http://schema.nethserver.org/cluster/add-internal-provider-input.json#/properties/node")
+
+### node Type
+
+`integer` ([Node ID](add-internal-provider-input-properties-node-id.md))
+
+### node Constraints
+
+**minimum**: the value of this number must greater than or equal to: `1`
+
+## domain
+
+Add the instance to an already existing domain. This field is optional.
+
+`domain`
+
+* is optional
+
+* Type: `string` ([Domain](add-internal-provider-input-properties-domain.md))
+
+* can be null
+
+* defined in: [add-internal-provider input](add-internal-provider-input-properties-domain.md "http://schema.nethserver.org/cluster/add-internal-provider-input.json#/properties/domain")
+
+### domain Type
+
+`string` ([Domain](add-internal-provider-input-properties-domain.md))
+
+### domain Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+# add-internal-provider input Definitions
diff --git a/core/add-module-input-1-properties-agent-liveness-check-limit.md b/core/add-module-input-1-properties-agent-liveness-check-limit.md
new file mode 100644
index 000000000..83971048b
--- /dev/null
+++ b/core/add-module-input-1-properties-agent-liveness-check-limit.md
@@ -0,0 +1,15 @@
+# Agent liveness check limit Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-module-input.json#/properties/check_idle_time
+```
+
+Change the default check limit value (default 8 seconds)
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-module-input.json\*](cluster/add-module-input.json "open original schema") |
+
+## check\_idle\_time Type
+
+`integer` ([Agent liveness check limit](add-module-input-1-properties-agent-liveness-check-limit.md))
diff --git a/core/add-module-input-1-properties-module-image-name.md b/core/add-module-input-1-properties-module-image-name.md
new file mode 100644
index 000000000..9a1ae9dcc
--- /dev/null
+++ b/core/add-module-input-1-properties-module-image-name.md
@@ -0,0 +1,15 @@
+# Module image name Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-module-input.json#/properties/image
+```
+
+Name of the module image to install. If the image is not a URL, install the latest version of the module. Otherwise, just install the provided URL.
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-module-input.json\*](cluster/add-module-input.json "open original schema") |
+
+## image Type
+
+`string` ([Module image name](add-module-input-1-properties-module-image-name.md))
diff --git a/core/add-module-input-1-properties-node-id.md b/core/add-module-input-1-properties-node-id.md
new file mode 100644
index 000000000..83b7158be
--- /dev/null
+++ b/core/add-module-input-1-properties-node-id.md
@@ -0,0 +1,19 @@
+# Node ID Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-module-input.json#/properties/node
+```
+
+Node identifier where the module has to be installed
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-module-input.json\*](cluster/add-module-input.json "open original schema") |
+
+## node Type
+
+`integer` ([Node ID](add-module-input-1-properties-node-id.md))
+
+## node Constraints
+
+**minimum**: the value of this number must greater than or equal to: `1`
diff --git a/core/add-module-input-1.md b/core/add-module-input-1.md
new file mode 100644
index 000000000..ed96e2c05
--- /dev/null
+++ b/core/add-module-input-1.md
@@ -0,0 +1,97 @@
+# add-module input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-module-input.json
+```
+
+Input schema of the add-module action
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [add-module-input.json](cluster/add-module-input.json "open original schema") |
+
+## add-module input Type
+
+`object` ([add-module input](add-module-input-1.md))
+
+## add-module input Examples
+
+```json
+{
+ "image": "traefik",
+ "node": 1
+}
+```
+
+```json
+{
+ "image": "ghcr.io/nethserver/traefik:latest",
+ "node": 1
+}
+```
+
+# add-module input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------------------ | :-------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [check\_idle\_time](#check_idle_time) | `integer` | Optional | cannot be null | [add-module input](add-module-input-1-properties-agent-liveness-check-limit.md "http://schema.nethserver.org/cluster/add-module-input.json#/properties/check_idle_time") |
+| [image](#image) | `string` | Required | cannot be null | [add-module input](add-module-input-1-properties-module-image-name.md "http://schema.nethserver.org/cluster/add-module-input.json#/properties/image") |
+| [node](#node) | `integer` | Required | cannot be null | [add-module input](add-module-input-1-properties-node-id.md "http://schema.nethserver.org/cluster/add-module-input.json#/properties/node") |
+
+## check\_idle\_time
+
+Change the default check limit value (default 8 seconds)
+
+`check_idle_time`
+
+* is optional
+
+* Type: `integer` ([Agent liveness check limit](add-module-input-1-properties-agent-liveness-check-limit.md))
+
+* cannot be null
+
+* defined in: [add-module input](add-module-input-1-properties-agent-liveness-check-limit.md "http://schema.nethserver.org/cluster/add-module-input.json#/properties/check_idle_time")
+
+### check\_idle\_time Type
+
+`integer` ([Agent liveness check limit](add-module-input-1-properties-agent-liveness-check-limit.md))
+
+## image
+
+Name of the module image to install. If the image is not a URL, install the latest version of the module. Otherwise, just install the provided URL.
+
+`image`
+
+* is required
+
+* Type: `string` ([Module image name](add-module-input-1-properties-module-image-name.md))
+
+* cannot be null
+
+* defined in: [add-module input](add-module-input-1-properties-module-image-name.md "http://schema.nethserver.org/cluster/add-module-input.json#/properties/image")
+
+### image Type
+
+`string` ([Module image name](add-module-input-1-properties-module-image-name.md))
+
+## node
+
+Node identifier where the module has to be installed
+
+`node`
+
+* is required
+
+* Type: `integer` ([Node ID](add-module-input-1-properties-node-id.md))
+
+* cannot be null
+
+* defined in: [add-module input](add-module-input-1-properties-node-id.md "http://schema.nethserver.org/cluster/add-module-input.json#/properties/node")
+
+### node Type
+
+`integer` ([Node ID](add-module-input-1-properties-node-id.md))
+
+### node Constraints
+
+**minimum**: the value of this number must greater than or equal to: `1`
diff --git a/core/add-module-input-properties-initial-module-environment-patternproperties-.md b/core/add-module-input-properties-initial-module-environment-patternproperties-.md
new file mode 100644
index 000000000..9f4f514e4
--- /dev/null
+++ b/core/add-module-input-properties-initial-module-environment-patternproperties-.md
@@ -0,0 +1,15 @@
+# Untitled string in add-module input Schema
+
+```txt
+http://schema.nethserver.org/node/add-module-input.json#/properties/environment/patternProperties/^[^=]+$
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-module-input.json\*](node/add-module-input.json "open original schema") |
+
+## ^\[^=]+$ Type
+
+`string`
diff --git a/core/add-module-input-properties-initial-module-environment-patternproperties.md b/core/add-module-input-properties-initial-module-environment-patternproperties.md
new file mode 100644
index 000000000..e92fde628
--- /dev/null
+++ b/core/add-module-input-properties-initial-module-environment-patternproperties.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in add-module input Schema
+
+```txt
+http://schema.nethserver.org/node/add-module-input.json#/properties/environment/patternProperties
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-module-input.json\*](node/add-module-input.json "open original schema") |
+
+## patternProperties Type
+
+unknown
diff --git a/core/add-module-input-properties-initial-module-environment-properties-image_url.md b/core/add-module-input-properties-initial-module-environment-properties-image_url.md
new file mode 100644
index 000000000..58dfcef4a
--- /dev/null
+++ b/core/add-module-input-properties-initial-module-environment-properties-image_url.md
@@ -0,0 +1,25 @@
+# Untitled string in add-module input Schema
+
+```txt
+http://schema.nethserver.org/node/add-module-input.json#/properties/environment/properties/IMAGE_URL
+```
+
+URL of the module root image
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-module-input.json\*](node/add-module-input.json "open original schema") |
+
+## IMAGE\_URL Type
+
+`string`
+
+## IMAGE\_URL Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## IMAGE\_URL Examples
+
+```json
+"ghcr.io/nethserver/mymodule:v2.3.2"
+```
diff --git a/core/add-module-input-properties-initial-module-environment.md b/core/add-module-input-properties-initial-module-environment.md
new file mode 100644
index 000000000..eb559f9e2
--- /dev/null
+++ b/core/add-module-input-properties-initial-module-environment.md
@@ -0,0 +1,68 @@
+# Initial module environment Schema
+
+```txt
+http://schema.nethserver.org/node/add-module-input.json#/properties/environment
+```
+
+Assign initial values to the module environment
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Forbidden | none | [add-module-input.json\*](node/add-module-input.json "open original schema") |
+
+## environment Type
+
+`object` ([Initial module environment](add-module-input-properties-initial-module-environment.md))
+
+# environment Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :----------------------- | :------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| [IMAGE\_URL](#image_url) | `string` | Optional | cannot be null | [add-module input](add-module-input-properties-initial-module-environment-properties-image_url.md "http://schema.nethserver.org/node/add-module-input.json#/properties/environment/properties/IMAGE_URL") |
+| `^[^=]+$` | `string` | Optional | cannot be null | [add-module input](add-module-input-properties-initial-module-environment-patternproperties-.md "http://schema.nethserver.org/node/add-module-input.json#/properties/environment/patternProperties/^\[^=]+$") |
+
+## IMAGE\_URL
+
+URL of the module root image
+
+`IMAGE_URL`
+
+* is optional
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [add-module input](add-module-input-properties-initial-module-environment-properties-image_url.md "http://schema.nethserver.org/node/add-module-input.json#/properties/environment/properties/IMAGE_URL")
+
+### IMAGE\_URL Type
+
+`string`
+
+### IMAGE\_URL Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+### IMAGE\_URL Examples
+
+```json
+"ghcr.io/nethserver/mymodule:v2.3.2"
+```
+
+## Pattern: `^[^=]+$`
+
+
+
+`^[^=]+$`
+
+* is optional
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [add-module input](add-module-input-properties-initial-module-environment-patternproperties-.md "http://schema.nethserver.org/node/add-module-input.json#/properties/environment/patternProperties/^\[^=]+$")
+
+### ^\[^=]+$ Type
+
+`string`
diff --git a/core/add-module-input-properties-module-identifier.md b/core/add-module-input-properties-module-identifier.md
new file mode 100644
index 000000000..a1efac5c4
--- /dev/null
+++ b/core/add-module-input-properties-module-identifier.md
@@ -0,0 +1,33 @@
+# Module identifier Schema
+
+```txt
+http://schema.nethserver.org/node/add-module-input.json#/properties/module_id
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-module-input.json\*](node/add-module-input.json "open original schema") |
+
+## module\_id Type
+
+`string` ([Module identifier](add-module-input-properties-module-identifier.md))
+
+## module\_id Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## module\_id Examples
+
+```json
+"dokuwiki1"
+```
+
+```json
+"traefik3"
+```
+
+```json
+"samba1"
+```
diff --git a/core/add-module-input-properties-required-type-of-installation.md b/core/add-module-input-properties-required-type-of-installation.md
new file mode 100644
index 000000000..fec8661aa
--- /dev/null
+++ b/core/add-module-input-properties-required-type-of-installation.md
@@ -0,0 +1,16 @@
+# Required type of installation Schema
+
+```txt
+http://schema.nethserver.org/node/add-module-input.json#/properties/is_rootfull
+```
+
+If `true` the module is installed in rootfull mode.
+Its agent runs as root and its containers can be granted **privileged access**.
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-module-input.json\*](node/add-module-input.json "open original schema") |
+
+## is\_rootfull Type
+
+`boolean` ([Required type of installation](add-module-input-properties-required-type-of-installation.md))
diff --git a/core/add-module-input.json b/core/add-module-input.json
new file mode 100644
index 000000000..23b0301c4
--- /dev/null
+++ b/core/add-module-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"add-module input","$id":"http://schema.nethserver.org/cluster/add-module-input.json","description":"Input schema of the add-module action","examples":[{"image":"traefik","node":1},{"image":"ghcr.io/nethserver/traefik:latest","node":1}],"type":"object","required":["image","node"],"properties":{"check_idle_time":{"title":"Agent liveness check limit","description":"Change the default check limit value (default 8 seconds)","type":"integer"},"image":{"title":"Module image name","description":"Name of the module image to install. If the image is not a URL, install the latest version of the module. Otherwise, just install the provided URL.","type":"string"},"node":{"title":"Node ID","description":"Node identifier where the module has to be installed","type":"integer","minimum":1}}}
diff --git a/core/add-module-input.md b/core/add-module-input.md
new file mode 100644
index 000000000..c12353ca1
--- /dev/null
+++ b/core/add-module-input.md
@@ -0,0 +1,108 @@
+# add-module input Schema
+
+```txt
+http://schema.nethserver.org/node/add-module-input.json
+```
+
+Install a module on the worker node
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [add-module-input.json](node/add-module-input.json "open original schema") |
+
+## add-module input Type
+
+`object` ([add-module input](add-module-input.md))
+
+## add-module input Examples
+
+```json
+{
+ "module_id": "mymodule2",
+ "is_rootfull": false,
+ "environment": {
+ "IMAGE_URL": "ghcr.io/nethserver/mymodule:v2.3.2"
+ }
+}
+```
+
+# add-module input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :--------------------------- | :-------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [environment](#environment) | `object` | Required | cannot be null | [add-module input](add-module-input-properties-initial-module-environment.md "http://schema.nethserver.org/node/add-module-input.json#/properties/environment") |
+| [is\_rootfull](#is_rootfull) | `boolean` | Required | cannot be null | [add-module input](add-module-input-properties-required-type-of-installation.md "http://schema.nethserver.org/node/add-module-input.json#/properties/is_rootfull") |
+| [module\_id](#module_id) | `string` | Required | cannot be null | [add-module input](add-module-input-properties-module-identifier.md "http://schema.nethserver.org/node/add-module-input.json#/properties/module_id") |
+
+## environment
+
+Assign initial values to the module environment
+
+`environment`
+
+* is required
+
+* Type: `object` ([Initial module environment](add-module-input-properties-initial-module-environment.md))
+
+* cannot be null
+
+* defined in: [add-module input](add-module-input-properties-initial-module-environment.md "http://schema.nethserver.org/node/add-module-input.json#/properties/environment")
+
+### environment Type
+
+`object` ([Initial module environment](add-module-input-properties-initial-module-environment.md))
+
+## is\_rootfull
+
+If `true` the module is installed in rootfull mode.
+Its agent runs as root and its containers can be granted **privileged access**.
+
+`is_rootfull`
+
+* is required
+
+* Type: `boolean` ([Required type of installation](add-module-input-properties-required-type-of-installation.md))
+
+* cannot be null
+
+* defined in: [add-module input](add-module-input-properties-required-type-of-installation.md "http://schema.nethserver.org/node/add-module-input.json#/properties/is_rootfull")
+
+### is\_rootfull Type
+
+`boolean` ([Required type of installation](add-module-input-properties-required-type-of-installation.md))
+
+## module\_id
+
+
+
+`module_id`
+
+* is required
+
+* Type: `string` ([Module identifier](add-module-input-properties-module-identifier.md))
+
+* cannot be null
+
+* defined in: [add-module input](add-module-input-properties-module-identifier.md "http://schema.nethserver.org/node/add-module-input.json#/properties/module_id")
+
+### module\_id Type
+
+`string` ([Module identifier](add-module-input-properties-module-identifier.md))
+
+### module\_id Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+### module\_id Examples
+
+```json
+"dokuwiki1"
+```
+
+```json
+"traefik3"
+```
+
+```json
+"samba1"
+```
diff --git a/core/add-module-output-1-properties-image_name.md b/core/add-module-output-1-properties-image_name.md
new file mode 100644
index 000000000..0aaf899ea
--- /dev/null
+++ b/core/add-module-output-1-properties-image_name.md
@@ -0,0 +1,15 @@
+# Untitled string in add-module output Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-module-output.json#/properties/image_name
+```
+
+Display name of the installed image
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-module-output.json\*](cluster/add-module-output.json "open original schema") |
+
+## image\_name Type
+
+`string`
diff --git a/core/add-module-output-1-properties-image_url.md b/core/add-module-output-1-properties-image_url.md
new file mode 100644
index 000000000..fcdca4514
--- /dev/null
+++ b/core/add-module-output-1-properties-image_url.md
@@ -0,0 +1,15 @@
+# Untitled string in add-module output Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-module-output.json#/properties/image_url
+```
+
+Repository URL of the installed image
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-module-output.json\*](cluster/add-module-output.json "open original schema") |
+
+## image\_url Type
+
+`string`
diff --git a/core/add-module-output-1-properties-module_id.md b/core/add-module-output-1-properties-module_id.md
new file mode 100644
index 000000000..33d02901b
--- /dev/null
+++ b/core/add-module-output-1-properties-module_id.md
@@ -0,0 +1,15 @@
+# Untitled string in add-module output Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-module-output.json#/properties/module_id
+```
+
+Generated identifier of the added module instance
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-module-output.json\*](cluster/add-module-output.json "open original schema") |
+
+## module\_id Type
+
+`string`
diff --git a/core/add-module-output-1.md b/core/add-module-output-1.md
new file mode 100644
index 000000000..59443feea
--- /dev/null
+++ b/core/add-module-output-1.md
@@ -0,0 +1,87 @@
+# add-module output Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-module-output.json
+```
+
+Output schema of the add-module action
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [add-module-output.json](cluster/add-module-output.json "open original schema") |
+
+## add-module output Type
+
+`object` ([add-module output](add-module-output-1.md))
+
+## add-module output Examples
+
+```json
+{
+ "module_id": "traefik1",
+ "image_name": "Traefik edge proxy",
+ "image_url": "ghcr.io/nethserver/traefik:latest"
+}
+```
+
+# add-module output Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------- | :------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [module\_id](#module_id) | `string` | Required | cannot be null | [add-module output](add-module-output-1-properties-module_id.md "http://schema.nethserver.org/cluster/add-module-output.json#/properties/module_id") |
+| [image\_name](#image_name) | `string` | Required | cannot be null | [add-module output](add-module-output-1-properties-image_name.md "http://schema.nethserver.org/cluster/add-module-output.json#/properties/image_name") |
+| [image\_url](#image_url) | `string` | Required | cannot be null | [add-module output](add-module-output-1-properties-image_url.md "http://schema.nethserver.org/cluster/add-module-output.json#/properties/image_url") |
+
+## module\_id
+
+Generated identifier of the added module instance
+
+`module_id`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [add-module output](add-module-output-1-properties-module_id.md "http://schema.nethserver.org/cluster/add-module-output.json#/properties/module_id")
+
+### module\_id Type
+
+`string`
+
+## image\_name
+
+Display name of the installed image
+
+`image_name`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [add-module output](add-module-output-1-properties-image_name.md "http://schema.nethserver.org/cluster/add-module-output.json#/properties/image_name")
+
+### image\_name Type
+
+`string`
+
+## image\_url
+
+Repository URL of the installed image
+
+`image_url`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [add-module output](add-module-output-1-properties-image_url.md "http://schema.nethserver.org/cluster/add-module-output.json#/properties/image_url")
+
+### image\_url Type
+
+`string`
diff --git a/core/add-module-output-properties-redis_sha256.md b/core/add-module-output-properties-redis_sha256.md
new file mode 100644
index 000000000..a88e66b71
--- /dev/null
+++ b/core/add-module-output-properties-redis_sha256.md
@@ -0,0 +1,15 @@
+# Untitled string in add-module output Schema
+
+```txt
+http://schema.nethserver.org/node/add-module-output.json#/properties/redis_sha256
+```
+
+The generated Redis hashed password for the new node
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :----------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-module-output.json\*](node/add-module-output.json "open original schema") |
+
+## redis\_sha256 Type
+
+`string`
diff --git a/core/add-module-output.json b/core/add-module-output.json
new file mode 100644
index 000000000..02af24e37
--- /dev/null
+++ b/core/add-module-output.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"add-module output","$id":"http://schema.nethserver.org/cluster/add-module-output.json","description":"Output schema of the add-module action","examples":[{"module_id":"traefik1","image_name":"Traefik edge proxy","image_url":"ghcr.io/nethserver/traefik:latest"}],"type":"object","required":["module_id","image_name","image_url"],"properties":{"module_id":{"description":"Generated identifier of the added module instance","type":"string"},"image_name":{"description":"Display name of the installed image","type":"string"},"image_url":{"description":"Repository URL of the installed image","type":"string"}}}
diff --git a/core/add-module-output.md b/core/add-module-output.md
new file mode 100644
index 000000000..27bdfc04a
--- /dev/null
+++ b/core/add-module-output.md
@@ -0,0 +1,47 @@
+# add-module output Schema
+
+```txt
+http://schema.nethserver.org/node/add-module-output.json
+```
+
+Return generated information of the newly added module
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [add-module-output.json](node/add-module-output.json "open original schema") |
+
+## add-module output Type
+
+`object` ([add-module output](add-module-output.md))
+
+## add-module output Examples
+
+```json
+{
+ "redis_sha256": "a0c85889af15c49d7dd08cb896ec0c5e960a67d5d48d51f06757c2cee3a0277b"
+}
+```
+
+# add-module output Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :----------------------------- | :------- | :------- | :------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [redis\_sha256](#redis_sha256) | `string` | Required | cannot be null | [add-module output](add-module-output-properties-redis_sha256.md "http://schema.nethserver.org/node/add-module-output.json#/properties/redis_sha256") |
+
+## redis\_sha256
+
+The generated Redis hashed password for the new node
+
+`redis_sha256`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [add-module output](add-module-output-properties-redis_sha256.md "http://schema.nethserver.org/node/add-module-output.json#/properties/redis_sha256")
+
+### redis\_sha256 Type
+
+`string`
diff --git a/core/add-node-input-properties-endpoint.md b/core/add-node-input-properties-endpoint.md
new file mode 100644
index 000000000..bef7396ef
--- /dev/null
+++ b/core/add-node-input-properties-endpoint.md
@@ -0,0 +1,15 @@
+# Untitled string in add-node input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-node-input.json#/properties/endpoint
+```
+
+Announce the public WireGuard VPN endpoint of the node
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-node-input.json\*](cluster/add-node-input.json "open original schema") |
+
+## endpoint Type
+
+`string`
diff --git a/core/add-node-input-properties-flags-items.md b/core/add-node-input-properties-flags-items.md
new file mode 100644
index 000000000..af0e83eb4
--- /dev/null
+++ b/core/add-node-input-properties-flags-items.md
@@ -0,0 +1,15 @@
+# Untitled string in add-node input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-node-input.json#/properties/flags/items
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-node-input.json\*](cluster/add-node-input.json "open original schema") |
+
+## items Type
+
+`string`
diff --git a/core/add-node-input-properties-flags.md b/core/add-node-input-properties-flags.md
new file mode 100644
index 000000000..5f0912134
--- /dev/null
+++ b/core/add-node-input-properties-flags.md
@@ -0,0 +1,15 @@
+# Untitled array in add-node input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-node-input.json#/properties/flags
+```
+
+List of node flags
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-node-input.json\*](cluster/add-node-input.json "open original schema") |
+
+## flags Type
+
+`string[]`
diff --git a/core/add-node-input-properties-public_key.md b/core/add-node-input-properties-public_key.md
new file mode 100644
index 000000000..e05809dc5
--- /dev/null
+++ b/core/add-node-input-properties-public_key.md
@@ -0,0 +1,15 @@
+# Untitled string in add-node input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-node-input.json#/properties/public_key
+```
+
+Node public key of the WireGuard VPN
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-node-input.json\*](cluster/add-node-input.json "open original schema") |
+
+## public\_key Type
+
+`string`
diff --git a/core/add-node-input.json b/core/add-node-input.json
new file mode 100644
index 000000000..fd1c38dab
--- /dev/null
+++ b/core/add-node-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"add-node input","$id":"http://schema.nethserver.org/cluster/add-node-input.json","description":"Input schema of the add-node action","examples":[{"endpoint":"","node_pwh":"b12f4f5137c4c6b4ef2efd936b88119c4af8356d4e9c3a31a18cd4a88effc41d","public_key":"XCVh3GCRqMcmIgpHhsbCL7Usm7Lm7Hb7bsS5LTSz/Dc="},{"endpoint":"","node_pwh":"b12f4f5137c4c6b4ef2efd936b88119c4af8356d4e9c3a31a18cd4a88effc41d","public_key":"XCVh3GCRqMcmIgpHhsbCL7Usm7Lm7Hb7bsS5LTSz/Dc=","flags":["nomodules"]}],"type":"object","required":["node_pwh","public_key","endpoint"],"properties":{"node_pwh":{"$ref":"http://schema.nethserver.org/cluster.json#/definitions/redis-pwh"},"public_key":{"description":"Node public key of the WireGuard VPN","type":"string"},"endpoint":{"description":"Announce the public WireGuard VPN endpoint of the node","type":"string"},"flags":{"description":"List of node flags","type":"array","items":{"type":"string"}}}}
diff --git a/core/add-node-input.md b/core/add-node-input.md
new file mode 100644
index 000000000..b9bd0cff7
--- /dev/null
+++ b/core/add-node-input.md
@@ -0,0 +1,137 @@
+# add-node input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-node-input.json
+```
+
+Input schema of the add-node action
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [add-node-input.json](cluster/add-node-input.json "open original schema") |
+
+## add-node input Type
+
+`object` ([add-node input](add-node-input.md))
+
+## add-node input Examples
+
+```json
+{
+ "endpoint": "",
+ "node_pwh": "b12f4f5137c4c6b4ef2efd936b88119c4af8356d4e9c3a31a18cd4a88effc41d",
+ "public_key": "XCVh3GCRqMcmIgpHhsbCL7Usm7Lm7Hb7bsS5LTSz/Dc="
+}
+```
+
+```json
+{
+ "endpoint": "",
+ "node_pwh": "b12f4f5137c4c6b4ef2efd936b88119c4af8356d4e9c3a31a18cd4a88effc41d",
+ "public_key": "XCVh3GCRqMcmIgpHhsbCL7Usm7Lm7Hb7bsS5LTSz/Dc=",
+ "flags": [
+ "nomodules"
+ ]
+}
+```
+
+# add-node input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------- | :------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------ |
+| [node\_pwh](#node_pwh) | `string` | Required | cannot be null | [add-node input](cluster-definitions-redis-password.md "http://schema.nethserver.org/cluster/add-node-input.json#/properties/node_pwh") |
+| [public\_key](#public_key) | `string` | Required | cannot be null | [add-node input](add-node-input-properties-public_key.md "http://schema.nethserver.org/cluster/add-node-input.json#/properties/public_key") |
+| [endpoint](#endpoint) | `string` | Required | cannot be null | [add-node input](add-node-input-properties-endpoint.md "http://schema.nethserver.org/cluster/add-node-input.json#/properties/endpoint") |
+| [flags](#flags) | `array` | Optional | cannot be null | [add-node input](add-node-input-properties-flags.md "http://schema.nethserver.org/cluster/add-node-input.json#/properties/flags") |
+
+## node\_pwh
+
+Redis SHA256 hashed password for Users, Cluster, Nodes and Modules
+
+`node_pwh`
+
+* is required
+
+* Type: `string` ([Redis password](cluster-definitions-redis-password.md))
+
+* cannot be null
+
+* defined in: [add-node input](cluster-definitions-redis-password.md "http://schema.nethserver.org/cluster/add-node-input.json#/properties/node_pwh")
+
+### node\_pwh Type
+
+`string` ([Redis password](cluster-definitions-redis-password.md))
+
+### node\_pwh Constraints
+
+**maximum length**: the maximum number of characters for this string is: `64`
+
+**minimum length**: the minimum number of characters for this string is: `64`
+
+**pattern**: the string must match the following regular expression:
+
+```regexp
+^[a-f0-9]{64}$
+```
+
+[try pattern](https://regexr.com/?expression=%5E%5Ba-f0-9%5D%7B64%7D%24 "try regular expression with regexr.com")
+
+### node\_pwh Examples
+
+```json
+"73cb3858a687a8494ca3323053016282f3dad39d42cf62ca4e79dda2aac7d9ac"
+```
+
+## public\_key
+
+Node public key of the WireGuard VPN
+
+`public_key`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [add-node input](add-node-input-properties-public_key.md "http://schema.nethserver.org/cluster/add-node-input.json#/properties/public_key")
+
+### public\_key Type
+
+`string`
+
+## endpoint
+
+Announce the public WireGuard VPN endpoint of the node
+
+`endpoint`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [add-node input](add-node-input-properties-endpoint.md "http://schema.nethserver.org/cluster/add-node-input.json#/properties/endpoint")
+
+### endpoint Type
+
+`string`
+
+## flags
+
+List of node flags
+
+`flags`
+
+* is optional
+
+* Type: `string[]`
+
+* cannot be null
+
+* defined in: [add-node input](add-node-input-properties-flags.md "http://schema.nethserver.org/cluster/add-node-input.json#/properties/flags")
+
+### flags Type
+
+`string[]`
diff --git a/core/add-node-output-properties-leader-ip-address.md b/core/add-node-output-properties-leader-ip-address.md
new file mode 100644
index 000000000..98c68f91b
--- /dev/null
+++ b/core/add-node-output-properties-leader-ip-address.md
@@ -0,0 +1,19 @@
+# Leader IP address Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-node-output.json#/properties/leader_ip_address
+```
+
+VPN IP address of the leader node
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-node-output.json\*](cluster/add-node-output.json "open original schema") |
+
+## leader\_ip\_address Type
+
+`string` ([Leader IP address](add-node-output-properties-leader-ip-address.md))
+
+## leader\_ip\_address Constraints
+
+**IPv4**: the string must be an IPv4 address (dotted quad), according to [RFC 2673, section 3.2](https://tools.ietf.org/html/rfc2673 "check the specification")
diff --git a/core/add-node-output-properties-leader-public-vpn-udp-endpoint.md b/core/add-node-output-properties-leader-public-vpn-udp-endpoint.md
new file mode 100644
index 000000000..0a5d715e2
--- /dev/null
+++ b/core/add-node-output-properties-leader-public-vpn-udp-endpoint.md
@@ -0,0 +1,25 @@
+# Leader public VPN UDP endpoint Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-node-output.json#/properties/leader_endpoint
+```
+
+WireGuard public UDP endpoint address to contact the leader node. Syntax is `hostname:port` or `IP:port`
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-node-output.json\*](cluster/add-node-output.json "open original schema") |
+
+## leader\_endpoint Type
+
+`string` ([Leader public VPN UDP endpoint](add-node-output-properties-leader-public-vpn-udp-endpoint.md))
+
+## leader\_endpoint Examples
+
+```json
+"my.example.com:55820"
+```
+
+```json
+"1.2.3.4:55820"
+```
diff --git a/core/add-node-output-properties-leader-vpn-key.md b/core/add-node-output-properties-leader-vpn-key.md
new file mode 100644
index 000000000..f41073e6a
--- /dev/null
+++ b/core/add-node-output-properties-leader-vpn-key.md
@@ -0,0 +1,15 @@
+# Leader VPN key Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-node-output.json#/properties/leader_public_key
+```
+
+WireGuard public key of the leader node
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-node-output.json\*](cluster/add-node-output.json "open original schema") |
+
+## leader\_public\_key Type
+
+`string` ([Leader VPN key](add-node-output-properties-leader-vpn-key.md))
diff --git a/core/add-node-output-properties-node-identifier.md b/core/add-node-output-properties-node-identifier.md
new file mode 100644
index 000000000..ec730cd15
--- /dev/null
+++ b/core/add-node-output-properties-node-identifier.md
@@ -0,0 +1,15 @@
+# Node identifier Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-node-output.json#/properties/node_id
+```
+
+Allocated identifier of the new node
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-node-output.json\*](cluster/add-node-output.json "open original schema") |
+
+## node\_id Type
+
+`integer` ([Node identifier](add-node-output-properties-node-identifier.md))
diff --git a/core/add-node-output-properties-node-ip-address.md b/core/add-node-output-properties-node-ip-address.md
new file mode 100644
index 000000000..6133c15b3
--- /dev/null
+++ b/core/add-node-output-properties-node-ip-address.md
@@ -0,0 +1,19 @@
+# Node IP address Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-node-output.json#/properties/ip_address
+```
+
+VPN IP address of the added node
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-node-output.json\*](cluster/add-node-output.json "open original schema") |
+
+## ip\_address Type
+
+`string` ([Node IP address](add-node-output-properties-node-ip-address.md))
+
+## ip\_address Constraints
+
+**IPv4**: the string must be an IPv4 address (dotted quad), according to [RFC 2673, section 3.2](https://tools.ietf.org/html/rfc2673 "check the specification")
diff --git a/core/add-node-output.json b/core/add-node-output.json
new file mode 100644
index 000000000..620ef9eca
--- /dev/null
+++ b/core/add-node-output.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"add-node output","$id":"http://schema.nethserver.org/cluster/add-node-output.json","description":"Output schema of the add-node action","examples":[{"node_id":2,"ip_address":"10.5.4.2","leader_public_key":"aoBydmHg2WWv5OqYM1ZegcCdC6dev+IHnoNv3ftNY2U=","network":"10.5.4.0/24","leader_ip_address":"10.5.4.1","leader_endpoint":"fc1.example.com:55820"}],"type":"object","required":["node_id","ip_address","network","leader_public_key","leader_ip_address","leader_endpoint"],"properties":{"node_id":{"title":"Node identifier","description":"Allocated identifier of the new node","type":"integer","minimumExclusive":1},"ip_address":{"title":"Node IP address","description":"VPN IP address of the added node","type":"string","format":"ipv4"},"network":{"title":"Cluster network address","description":"The VPN network in CIDR notation used by the cluster","$ref":"http://schema.nethserver.org/cluster.json#/definitions/ipv4-cidr"},"leader_public_key":{"title":"Leader VPN key","description":"WireGuard public key of the leader node","type":"string"},"leader_ip_address":{"title":"Leader IP address","description":"VPN IP address of the leader node","type":"string","format":"ipv4"},"leader_endpoint":{"title":"Leader public VPN UDP endpoint","description":"WireGuard public UDP endpoint address to contact the leader node. Syntax is `hostname:port` or `IP:port`","type":"string","examples":["my.example.com:55820","1.2.3.4:55820"]}}}
diff --git a/core/add-node-output.md b/core/add-node-output.md
new file mode 100644
index 000000000..f8dcf4a08
--- /dev/null
+++ b/core/add-node-output.md
@@ -0,0 +1,185 @@
+# add-node output Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-node-output.json
+```
+
+Output schema of the add-node action
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [add-node-output.json](cluster/add-node-output.json "open original schema") |
+
+## add-node output Type
+
+`object` ([add-node output](add-node-output.md))
+
+## add-node output Examples
+
+```json
+{
+ "node_id": 2,
+ "ip_address": "10.5.4.2",
+ "leader_public_key": "aoBydmHg2WWv5OqYM1ZegcCdC6dev+IHnoNv3ftNY2U=",
+ "network": "10.5.4.0/24",
+ "leader_ip_address": "10.5.4.1",
+ "leader_endpoint": "fc1.example.com:55820"
+}
+```
+
+# add-node output Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :---------------------------------------- | :-------- | :------- | :------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [node\_id](#node_id) | `integer` | Required | cannot be null | [add-node output](add-node-output-properties-node-identifier.md "http://schema.nethserver.org/cluster/add-node-output.json#/properties/node_id") |
+| [ip\_address](#ip_address) | `string` | Required | cannot be null | [add-node output](add-node-output-properties-node-ip-address.md "http://schema.nethserver.org/cluster/add-node-output.json#/properties/ip_address") |
+| [network](#network) | `string` | Required | cannot be null | [add-node output](cluster-definitions-ipv4-cidr.md "http://schema.nethserver.org/cluster/add-node-output.json#/properties/network") |
+| [leader\_public\_key](#leader_public_key) | `string` | Required | cannot be null | [add-node output](add-node-output-properties-leader-vpn-key.md "http://schema.nethserver.org/cluster/add-node-output.json#/properties/leader_public_key") |
+| [leader\_ip\_address](#leader_ip_address) | `string` | Required | cannot be null | [add-node output](add-node-output-properties-leader-ip-address.md "http://schema.nethserver.org/cluster/add-node-output.json#/properties/leader_ip_address") |
+| [leader\_endpoint](#leader_endpoint) | `string` | Required | cannot be null | [add-node output](add-node-output-properties-leader-public-vpn-udp-endpoint.md "http://schema.nethserver.org/cluster/add-node-output.json#/properties/leader_endpoint") |
+
+## node\_id
+
+Allocated identifier of the new node
+
+`node_id`
+
+* is required
+
+* Type: `integer` ([Node identifier](add-node-output-properties-node-identifier.md))
+
+* cannot be null
+
+* defined in: [add-node output](add-node-output-properties-node-identifier.md "http://schema.nethserver.org/cluster/add-node-output.json#/properties/node_id")
+
+### node\_id Type
+
+`integer` ([Node identifier](add-node-output-properties-node-identifier.md))
+
+## ip\_address
+
+VPN IP address of the added node
+
+`ip_address`
+
+* is required
+
+* Type: `string` ([Node IP address](add-node-output-properties-node-ip-address.md))
+
+* cannot be null
+
+* defined in: [add-node output](add-node-output-properties-node-ip-address.md "http://schema.nethserver.org/cluster/add-node-output.json#/properties/ip_address")
+
+### ip\_address Type
+
+`string` ([Node IP address](add-node-output-properties-node-ip-address.md))
+
+### ip\_address Constraints
+
+**IPv4**: the string must be an IPv4 address (dotted quad), according to [RFC 2673, section 3.2](https://tools.ietf.org/html/rfc2673 "check the specification")
+
+## network
+
+IPv4 with netmask in CIDR notation
+
+`network`
+
+* is required
+
+* Type: `string` ([IPv4 CIDR](cluster-definitions-ipv4-cidr.md))
+
+* cannot be null
+
+* defined in: [add-node output](cluster-definitions-ipv4-cidr.md "http://schema.nethserver.org/cluster/add-node-output.json#/properties/network")
+
+### network Type
+
+`string` ([IPv4 CIDR](cluster-definitions-ipv4-cidr.md))
+
+### network Constraints
+
+**pattern**: the string must match the following regular expression:
+
+```regexp
+^([0-9]{1,3}\.){3}[0-9]{1,3}(\/([0-9]|[1-2][0-9]|3[0-2]))?$
+```
+
+[try pattern](https://regexr.com/?expression=%5E\(%5B0-9%5D%7B1%2C3%7D%5C.\)%7B3%7D%5B0-9%5D%7B1%2C3%7D\(%5C%2F\(%5B0-9%5D%7C%5B1-2%5D%5B0-9%5D%7C3%5B0-2%5D\)\)%3F%24 "try regular expression with regexr.com")
+
+### network Examples
+
+```json
+"10.5.4.0/24"
+```
+
+```json
+"192.168.73.0/24"
+```
+
+## leader\_public\_key
+
+WireGuard public key of the leader node
+
+`leader_public_key`
+
+* is required
+
+* Type: `string` ([Leader VPN key](add-node-output-properties-leader-vpn-key.md))
+
+* cannot be null
+
+* defined in: [add-node output](add-node-output-properties-leader-vpn-key.md "http://schema.nethserver.org/cluster/add-node-output.json#/properties/leader_public_key")
+
+### leader\_public\_key Type
+
+`string` ([Leader VPN key](add-node-output-properties-leader-vpn-key.md))
+
+## leader\_ip\_address
+
+VPN IP address of the leader node
+
+`leader_ip_address`
+
+* is required
+
+* Type: `string` ([Leader IP address](add-node-output-properties-leader-ip-address.md))
+
+* cannot be null
+
+* defined in: [add-node output](add-node-output-properties-leader-ip-address.md "http://schema.nethserver.org/cluster/add-node-output.json#/properties/leader_ip_address")
+
+### leader\_ip\_address Type
+
+`string` ([Leader IP address](add-node-output-properties-leader-ip-address.md))
+
+### leader\_ip\_address Constraints
+
+**IPv4**: the string must be an IPv4 address (dotted quad), according to [RFC 2673, section 3.2](https://tools.ietf.org/html/rfc2673 "check the specification")
+
+## leader\_endpoint
+
+WireGuard public UDP endpoint address to contact the leader node. Syntax is `hostname:port` or `IP:port`
+
+`leader_endpoint`
+
+* is required
+
+* Type: `string` ([Leader public VPN UDP endpoint](add-node-output-properties-leader-public-vpn-udp-endpoint.md))
+
+* cannot be null
+
+* defined in: [add-node output](add-node-output-properties-leader-public-vpn-udp-endpoint.md "http://schema.nethserver.org/cluster/add-node-output.json#/properties/leader_endpoint")
+
+### leader\_endpoint Type
+
+`string` ([Leader public VPN UDP endpoint](add-node-output-properties-leader-public-vpn-udp-endpoint.md))
+
+### leader\_endpoint Examples
+
+```json
+"my.example.com:55820"
+```
+
+```json
+"1.2.3.4:55820"
+```
diff --git a/core/add-public-service-input-properties-firewall-ports-configuration.md b/core/add-public-service-input-properties-firewall-ports-configuration.md
new file mode 100644
index 000000000..60db3fcea
--- /dev/null
+++ b/core/add-public-service-input-properties-firewall-ports-configuration.md
@@ -0,0 +1,33 @@
+# Firewall ports configuration Schema
+
+```txt
+http://schema.nethserver.org/node/add-public-service-input.json#/properties/ports
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-public-service-input.json\*](node/add-public-service-input.json "open original schema") |
+
+## ports Type
+
+`array` ([Firewall ports configuration](add-public-service-input-properties-firewall-ports-configuration.md))
+
+## ports Constraints
+
+**minimum number of items**: the minimum number of items for this array is: `1`
+
+## ports Examples
+
+```json
+"25/tcp"
+```
+
+```json
+"21/udp"
+```
+
+```json
+"9000-9010/tcp"
+```
diff --git a/core/add-public-service-input-properties-service-name.md b/core/add-public-service-input-properties-service-name.md
new file mode 100644
index 000000000..e1988fd1a
--- /dev/null
+++ b/core/add-public-service-input-properties-service-name.md
@@ -0,0 +1,19 @@
+# Service name Schema
+
+```txt
+http://schema.nethserver.org/node/add-public-service-input.json#/properties/service
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-public-service-input.json\*](node/add-public-service-input.json "open original schema") |
+
+## service Type
+
+`string` ([Service name](add-public-service-input-properties-service-name.md))
+
+## service Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/add-public-service-input.json b/core/add-public-service-input.json
new file mode 100644
index 000000000..4016b8324
--- /dev/null
+++ b/core/add-public-service-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"add-public-service input","$id":"http://schema.nethserver.org/node/add-public-service-input.json","description":"Add firewall configuration for a new public service","examples":[{"service":"smtp","ports":["25/tcp"]}],"type":"object","required":["service","ports"],"properties":{"service":{"type":"string","title":"Service name","minLength":1},"ports":{"type":"array","title":"Firewall ports configuration","examples":["25/tcp","21/udp","9000-9010/tcp"],"minItems":1}}}
diff --git a/core/add-public-service-input.md b/core/add-public-service-input.md
new file mode 100644
index 000000000..e147b19d0
--- /dev/null
+++ b/core/add-public-service-input.md
@@ -0,0 +1,91 @@
+# add-public-service input Schema
+
+```txt
+http://schema.nethserver.org/node/add-public-service-input.json
+```
+
+Add firewall configuration for a new public service
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :----------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [add-public-service-input.json](node/add-public-service-input.json "open original schema") |
+
+## add-public-service input Type
+
+`object` ([add-public-service input](add-public-service-input.md))
+
+## add-public-service input Examples
+
+```json
+{
+ "service": "smtp",
+ "ports": [
+ "25/tcp"
+ ]
+}
+```
+
+# add-public-service input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------ | :------- | :------- | :------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [service](#service) | `string` | Required | cannot be null | [add-public-service input](add-public-service-input-properties-service-name.md "http://schema.nethserver.org/node/add-public-service-input.json#/properties/service") |
+| [ports](#ports) | `array` | Required | cannot be null | [add-public-service input](add-public-service-input-properties-firewall-ports-configuration.md "http://schema.nethserver.org/node/add-public-service-input.json#/properties/ports") |
+
+## service
+
+
+
+`service`
+
+* is required
+
+* Type: `string` ([Service name](add-public-service-input-properties-service-name.md))
+
+* cannot be null
+
+* defined in: [add-public-service input](add-public-service-input-properties-service-name.md "http://schema.nethserver.org/node/add-public-service-input.json#/properties/service")
+
+### service Type
+
+`string` ([Service name](add-public-service-input-properties-service-name.md))
+
+### service Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## ports
+
+
+
+`ports`
+
+* is required
+
+* Type: `array` ([Firewall ports configuration](add-public-service-input-properties-firewall-ports-configuration.md))
+
+* cannot be null
+
+* defined in: [add-public-service input](add-public-service-input-properties-firewall-ports-configuration.md "http://schema.nethserver.org/node/add-public-service-input.json#/properties/ports")
+
+### ports Type
+
+`array` ([Firewall ports configuration](add-public-service-input-properties-firewall-ports-configuration.md))
+
+### ports Constraints
+
+**minimum number of items**: the minimum number of items for this array is: `1`
+
+### ports Examples
+
+```json
+"25/tcp"
+```
+
+```json
+"21/udp"
+```
+
+```json
+"9000-9010/tcp"
+```
diff --git a/core/add-repository-input-properties-name.md b/core/add-repository-input-properties-name.md
new file mode 100644
index 000000000..989c6eed6
--- /dev/null
+++ b/core/add-repository-input-properties-name.md
@@ -0,0 +1,15 @@
+# Untitled string in add-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-repository-input.json#/properties/name
+```
+
+Unique repository name
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-repository-input.json\*](cluster/add-repository-input.json "open original schema") |
+
+## name Type
+
+`string`
diff --git a/core/add-repository-input-properties-status.md b/core/add-repository-input-properties-status.md
new file mode 100644
index 000000000..46b600ca6
--- /dev/null
+++ b/core/add-repository-input-properties-status.md
@@ -0,0 +1,15 @@
+# Untitled boolean in add-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-repository-input.json#/properties/status
+```
+
+Enable or disable the repository. When 'true', the repository is enabled.
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-repository-input.json\*](cluster/add-repository-input.json "open original schema") |
+
+## status Type
+
+`boolean`
diff --git a/core/add-repository-input-properties-testing.md b/core/add-repository-input-properties-testing.md
new file mode 100644
index 000000000..dd9d41334
--- /dev/null
+++ b/core/add-repository-input-properties-testing.md
@@ -0,0 +1,15 @@
+# Untitled boolean in add-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-repository-input.json#/properties/testing
+```
+
+Enable or disable access to testing images
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-repository-input.json\*](cluster/add-repository-input.json "open original schema") |
+
+## testing Type
+
+`boolean`
diff --git a/core/add-repository-input-properties-url.md b/core/add-repository-input-properties-url.md
new file mode 100644
index 000000000..2f107a56c
--- /dev/null
+++ b/core/add-repository-input-properties-url.md
@@ -0,0 +1,15 @@
+# Untitled string in add-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-repository-input.json#/properties/url
+```
+
+Base URL of the repository
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-repository-input.json\*](cluster/add-repository-input.json "open original schema") |
+
+## url Type
+
+`string`
diff --git a/core/add-repository-input.json b/core/add-repository-input.json
new file mode 100644
index 000000000..59d3c504e
--- /dev/null
+++ b/core/add-repository-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"add-repository input","$id":"http://schema.nethserver.org/cluster/add-repository-input.json","description":"Input schema of the add-repository action","examples":[{"name":"repository1","url":"https://repository1.nethserver.org/"}],"type":"object","properties":{"name":{"description":"Unique repository name","type":"string"},"url":{"description":"Base URL of the repository","type":"string"},"testing":{"description":"Enable or disable access to testing images","type":"boolean"},"status":{"description":"Enable or disable the repository. When 'true', the repository is enabled.","type":"boolean"}},"required":["name","url","testing","status"]}
diff --git a/core/add-repository-input.md b/core/add-repository-input.md
new file mode 100644
index 000000000..50da61384
--- /dev/null
+++ b/core/add-repository-input.md
@@ -0,0 +1,105 @@
+# add-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-repository-input.json
+```
+
+Input schema of the add-repository action
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [add-repository-input.json](cluster/add-repository-input.json "open original schema") |
+
+## add-repository input Type
+
+`object` ([add-repository input](add-repository-input.md))
+
+## add-repository input Examples
+
+```json
+{
+ "name": "repository1",
+ "url": "https://repository1.nethserver.org/"
+}
+```
+
+# add-repository input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------ | :-------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| [name](#name) | `string` | Required | cannot be null | [add-repository input](add-repository-input-properties-name.md "http://schema.nethserver.org/cluster/add-repository-input.json#/properties/name") |
+| [url](#url) | `string` | Required | cannot be null | [add-repository input](add-repository-input-properties-url.md "http://schema.nethserver.org/cluster/add-repository-input.json#/properties/url") |
+| [testing](#testing) | `boolean` | Required | cannot be null | [add-repository input](add-repository-input-properties-testing.md "http://schema.nethserver.org/cluster/add-repository-input.json#/properties/testing") |
+| [status](#status) | `boolean` | Required | cannot be null | [add-repository input](add-repository-input-properties-status.md "http://schema.nethserver.org/cluster/add-repository-input.json#/properties/status") |
+
+## name
+
+Unique repository name
+
+`name`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [add-repository input](add-repository-input-properties-name.md "http://schema.nethserver.org/cluster/add-repository-input.json#/properties/name")
+
+### name Type
+
+`string`
+
+## url
+
+Base URL of the repository
+
+`url`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [add-repository input](add-repository-input-properties-url.md "http://schema.nethserver.org/cluster/add-repository-input.json#/properties/url")
+
+### url Type
+
+`string`
+
+## testing
+
+Enable or disable access to testing images
+
+`testing`
+
+* is required
+
+* Type: `boolean`
+
+* cannot be null
+
+* defined in: [add-repository input](add-repository-input-properties-testing.md "http://schema.nethserver.org/cluster/add-repository-input.json#/properties/testing")
+
+### testing Type
+
+`boolean`
+
+## status
+
+Enable or disable the repository. When 'true', the repository is enabled.
+
+`status`
+
+* is required
+
+* Type: `boolean`
+
+* cannot be null
+
+* defined in: [add-repository input](add-repository-input-properties-status.md "http://schema.nethserver.org/cluster/add-repository-input.json#/properties/status")
+
+### status Type
+
+`boolean`
diff --git a/core/add-repository-output.json b/core/add-repository-output.json
new file mode 100644
index 000000000..be9afd7bd
--- /dev/null
+++ b/core/add-repository-output.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"add-repository output","$id":"http://schema.nethserver.org/cluster/add-repository-output.json","description":"Output schema of the add-repository action","examples":[true],"type":"boolean"}
diff --git a/core/add-repository-output.md b/core/add-repository-output.md
new file mode 100644
index 000000000..e3802709e
--- /dev/null
+++ b/core/add-repository-output.md
@@ -0,0 +1,21 @@
+# add-repository output Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-repository-output.json
+```
+
+Output schema of the add-repository action
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-repository-output.json](cluster/add-repository-output.json "open original schema") |
+
+## add-repository output Type
+
+`boolean` ([add-repository output](add-repository-output.md))
+
+## add-repository output Examples
+
+```json
+true
+```
diff --git a/core/add-tun-input-properties-ip-address-with-network.md b/core/add-tun-input-properties-ip-address-with-network.md
new file mode 100644
index 000000000..28b9cfe77
--- /dev/null
+++ b/core/add-tun-input-properties-ip-address-with-network.md
@@ -0,0 +1,19 @@
+# IP address with network Schema
+
+```txt
+http://schema.nethserver.org/node/add-tun-input.json#/properties/ip
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-tun-input.json\*](node/add-tun-input.json "open original schema") |
+
+## ip Type
+
+`string` ([IP address with network](add-tun-input-properties-ip-address-with-network.md))
+
+## ip Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/add-tun-input-properties-tun-name.md b/core/add-tun-input-properties-tun-name.md
new file mode 100644
index 000000000..bd345ffba
--- /dev/null
+++ b/core/add-tun-input-properties-tun-name.md
@@ -0,0 +1,19 @@
+# TUN name Schema
+
+```txt
+http://schema.nethserver.org/node/add-tun-input.json#/properties/tun
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-tun-input.json\*](node/add-tun-input.json "open original schema") |
+
+## tun Type
+
+`string` ([TUN name](add-tun-input-properties-tun-name.md))
+
+## tun Constraints
+
+**minimum length**: the minimum number of characters for this string is: `4`
diff --git a/core/add-tun-input.json b/core/add-tun-input.json
new file mode 100644
index 000000000..33cda1c94
--- /dev/null
+++ b/core/add-tun-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"add-tun input","$id":"http://schema.nethserver.org/node/add-tun-input.json","description":"Add a tun interface","examples":[{"tun":"tun0","ip":"192.168.100.1/255.255.255.0"},{"tun":"tun1","ip":"192.168.200.1/24"}],"type":"object","required":["tun","ip"],"properties":{"tun":{"type":"string","title":"TUN name","minLength":4},"ip":{"type":"string","title":"IP address with network","minLength":1}}}
diff --git a/core/add-tun-input.md b/core/add-tun-input.md
new file mode 100644
index 000000000..50782f54a
--- /dev/null
+++ b/core/add-tun-input.md
@@ -0,0 +1,82 @@
+# add-tun input Schema
+
+```txt
+http://schema.nethserver.org/node/add-tun-input.json
+```
+
+Add a tun interface
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [add-tun-input.json](node/add-tun-input.json "open original schema") |
+
+## add-tun input Type
+
+`object` ([add-tun input](add-tun-input.md))
+
+## add-tun input Examples
+
+```json
+{
+ "tun": "tun0",
+ "ip": "192.168.100.1/255.255.255.0"
+}
+```
+
+```json
+{
+ "tun": "tun1",
+ "ip": "192.168.200.1/24"
+}
+```
+
+# add-tun input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :---------- | :------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------- |
+| [tun](#tun) | `string` | Required | cannot be null | [add-tun input](add-tun-input-properties-tun-name.md "http://schema.nethserver.org/node/add-tun-input.json#/properties/tun") |
+| [ip](#ip) | `string` | Required | cannot be null | [add-tun input](add-tun-input-properties-ip-address-with-network.md "http://schema.nethserver.org/node/add-tun-input.json#/properties/ip") |
+
+## tun
+
+
+
+`tun`
+
+* is required
+
+* Type: `string` ([TUN name](add-tun-input-properties-tun-name.md))
+
+* cannot be null
+
+* defined in: [add-tun input](add-tun-input-properties-tun-name.md "http://schema.nethserver.org/node/add-tun-input.json#/properties/tun")
+
+### tun Type
+
+`string` ([TUN name](add-tun-input-properties-tun-name.md))
+
+### tun Constraints
+
+**minimum length**: the minimum number of characters for this string is: `4`
+
+## ip
+
+
+
+`ip`
+
+* is required
+
+* Type: `string` ([IP address with network](add-tun-input-properties-ip-address-with-network.md))
+
+* cannot be null
+
+* defined in: [add-tun input](add-tun-input-properties-ip-address-with-network.md "http://schema.nethserver.org/node/add-tun-input.json#/properties/ip")
+
+### ip Type
+
+`string` ([IP address with network](add-tun-input-properties-ip-address-with-network.md))
+
+### ip Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/add-user-input-properties-grant-assertions-list.md b/core/add-user-input-properties-grant-assertions-list.md
new file mode 100644
index 000000000..816012092
--- /dev/null
+++ b/core/add-user-input-properties-grant-assertions-list.md
@@ -0,0 +1,19 @@
+# Grant assertions list Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-user-input.json#/properties/grant
+```
+
+A list of initial roles on the matching objects
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-user-input.json\*](cluster/add-user-input.json "open original schema") |
+
+## grant Type
+
+`object[]` ([Grant object](cluster-definitions-grant-object.md))
+
+## grant Constraints
+
+**unique items**: all items in this array must be unique. Duplicates are not allowed.
diff --git a/core/add-user-input.json b/core/add-user-input.json
new file mode 100644
index 000000000..4e2de94fb
--- /dev/null
+++ b/core/add-user-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"add-user input","$id":"http://schema.nethserver.org/cluster/add-user-input.json","description":"Create a user account in the Redis DB for the cluster administration web interface","examples":[{"user":"admin","password_hash":"73cb3858a687a8494ca3323053016282f3dad39d42cf62ca4e79dda2aac7d9ac","set":{"display_name":"The Administrator"},"grant":[{"role":"owner","on":"*"}]}],"type":"object","required":["user","password_hash","set","grant"],"properties":{"user":{"$ref":"http://schema.nethserver.org/cluster.json#/definitions/strict-username-string"},"password_hash":{"$ref":"http://schema.nethserver.org/cluster.json#/definitions/redis-pwh"},"set":{"$ref":"http://schema.nethserver.org/cluster.json#/definitions/user-attributes"},"grant":{"description":"A list of initial roles on the matching objects","type":"array","title":"Grant assertions list","items":{"$ref":"http://schema.nethserver.org/cluster.json#/definitions/grant-object"},"uniqueItems":true}}}
diff --git a/core/add-user-input.md b/core/add-user-input.md
new file mode 100644
index 000000000..08784bfaa
--- /dev/null
+++ b/core/add-user-input.md
@@ -0,0 +1,183 @@
+# add-user input Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-user-input.json
+```
+
+Create a user account in the Redis DB for the cluster administration web interface
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [add-user-input.json](cluster/add-user-input.json "open original schema") |
+
+## add-user input Type
+
+`object` ([add-user input](add-user-input.md))
+
+## add-user input Examples
+
+```json
+{
+ "user": "admin",
+ "password_hash": "73cb3858a687a8494ca3323053016282f3dad39d42cf62ca4e79dda2aac7d9ac",
+ "set": {
+ "display_name": "The Administrator"
+ },
+ "grant": [
+ {
+ "role": "owner",
+ "on": "*"
+ }
+ ]
+}
+```
+
+# add-user input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------------- | :------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------ |
+| [user](#user) | `string` | Required | cannot be null | [add-user input](cluster-definitions-strict-username-format.md "http://schema.nethserver.org/cluster/add-user-input.json#/properties/user") |
+| [password\_hash](#password_hash) | `string` | Required | cannot be null | [add-user input](cluster-definitions-redis-password.md "http://schema.nethserver.org/cluster/add-user-input.json#/properties/password_hash") |
+| [set](#set) | `object` | Required | cannot be null | [add-user input](cluster-definitions-user-attributes.md "http://schema.nethserver.org/cluster/add-user-input.json#/properties/set") |
+| [grant](#grant) | `array` | Required | cannot be null | [add-user input](add-user-input-properties-grant-assertions-list.md "http://schema.nethserver.org/cluster/add-user-input.json#/properties/grant") |
+
+## user
+
+A username string can be written in many ways. This is a quite strict form. See
+
+`user`
+
+* is required
+
+* Type: `string` ([Strict username format](cluster-definitions-strict-username-format.md))
+
+* cannot be null
+
+* defined in: [add-user input](cluster-definitions-strict-username-format.md "http://schema.nethserver.org/cluster/add-user-input.json#/properties/user")
+
+### user Type
+
+`string` ([Strict username format](cluster-definitions-strict-username-format.md))
+
+### user Constraints
+
+**maximum length**: the maximum number of characters for this string is: `32`
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+**pattern**: the string must match the following regular expression:
+
+```regexp
+^[a-z_][a-z0-9_-]*[$]?$
+```
+
+[try pattern](https://regexr.com/?expression=%5E%5Ba-z_%5D%5Ba-z0-9_-%5D*%5B%24%5D%3F%24 "try regular expression with regexr.com")
+
+### user Examples
+
+```json
+"admin"
+```
+
+```json
+"u0000"
+```
+
+```json
+"worker$"
+```
+
+```json
+"test-user"
+```
+
+```json
+"test_user"
+```
+
+## password\_hash
+
+Redis SHA256 hashed password for Users, Cluster, Nodes and Modules
+
+`password_hash`
+
+* is required
+
+* Type: `string` ([Redis password](cluster-definitions-redis-password.md))
+
+* cannot be null
+
+* defined in: [add-user input](cluster-definitions-redis-password.md "http://schema.nethserver.org/cluster/add-user-input.json#/properties/password_hash")
+
+### password\_hash Type
+
+`string` ([Redis password](cluster-definitions-redis-password.md))
+
+### password\_hash Constraints
+
+**maximum length**: the maximum number of characters for this string is: `64`
+
+**minimum length**: the minimum number of characters for this string is: `64`
+
+**pattern**: the string must match the following regular expression:
+
+```regexp
+^[a-f0-9]{64}$
+```
+
+[try pattern](https://regexr.com/?expression=%5E%5Ba-f0-9%5D%7B64%7D%24 "try regular expression with regexr.com")
+
+### password\_hash Examples
+
+```json
+"73cb3858a687a8494ca3323053016282f3dad39d42cf62ca4e79dda2aac7d9ac"
+```
+
+## set
+
+Attributes of a User
+
+`set`
+
+* is required
+
+* Type: `object` ([User attributes](cluster-definitions-user-attributes.md))
+
+* cannot be null
+
+* defined in: [add-user input](cluster-definitions-user-attributes.md "http://schema.nethserver.org/cluster/add-user-input.json#/properties/set")
+
+### set Type
+
+`object` ([User attributes](cluster-definitions-user-attributes.md))
+
+### set Examples
+
+```json
+{
+ "display_name": "Mighty Admin",
+ "2fa": false
+}
+```
+
+## grant
+
+A list of initial roles on the matching objects
+
+`grant`
+
+* is required
+
+* Type: `object[]` ([Grant object](cluster-definitions-grant-object.md))
+
+* cannot be null
+
+* defined in: [add-user input](add-user-input-properties-grant-assertions-list.md "http://schema.nethserver.org/cluster/add-user-input.json#/properties/grant")
+
+### grant Type
+
+`object[]` ([Grant object](cluster-definitions-grant-object.md))
+
+### grant Constraints
+
+**unique items**: all items in this array must be unique. Duplicates are not allowed.
diff --git a/core/add-user-output.json b/core/add-user-output.json
new file mode 100644
index 000000000..e82169971
--- /dev/null
+++ b/core/add-user-output.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"add-user output","$id":"http://schema.nethserver.org/cluster/add-user-output.json","description":"No interesting information is returned. Just a success response.","examples":[true],"type":"boolean"}
diff --git a/core/add-user-output.md b/core/add-user-output.md
new file mode 100644
index 000000000..e9bcd84f8
--- /dev/null
+++ b/core/add-user-output.md
@@ -0,0 +1,21 @@
+# add-user output Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-user-output.json
+```
+
+No interesting information is returned. Just a success response.
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-user-output.json](cluster/add-user-output.json "open original schema") |
+
+## add-user output Type
+
+`boolean` ([add-user output](add-user-output.md))
+
+## add-user output Examples
+
+```json
+true
+```
diff --git a/core/alter-backup-input-properties-backup-id.md b/core/alter-backup-input-properties-backup-id.md
new file mode 100644
index 000000000..b37bb43c0
--- /dev/null
+++ b/core/alter-backup-input-properties-backup-id.md
@@ -0,0 +1,19 @@
+# Backup ID Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-backup-input.json#/properties/id
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [alter-backup-input.json\*](cluster/alter-backup-input.json "open original schema") |
+
+## id Type
+
+`integer` ([Backup ID](alter-backup-input-properties-backup-id.md))
+
+## id Constraints
+
+**minimum**: the value of this number must greater than or equal to: `1`
diff --git a/core/alter-backup-input-properties-backup-name.md b/core/alter-backup-input-properties-backup-name.md
new file mode 100644
index 000000000..6ad10b0a8
--- /dev/null
+++ b/core/alter-backup-input-properties-backup-name.md
@@ -0,0 +1,19 @@
+# Backup name Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-backup-input.json#/properties/name
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [alter-backup-input.json\*](cluster/alter-backup-input.json "open original schema") |
+
+## name Type
+
+`string` ([Backup name](alter-backup-input-properties-backup-name.md))
+
+## name Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/alter-backup-input-properties-backup-retention.md b/core/alter-backup-input-properties-backup-retention.md
new file mode 100644
index 000000000..71afcd70a
--- /dev/null
+++ b/core/alter-backup-input-properties-backup-retention.md
@@ -0,0 +1,19 @@
+# Backup retention Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-backup-input.json#/properties/retention
+```
+
+Number of backup snapshots to store before automatic deletion
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [alter-backup-input.json\*](cluster/alter-backup-input.json "open original schema") |
+
+## retention Type
+
+`integer` ([Backup retention](alter-backup-input-properties-backup-retention.md))
+
+## retention Constraints
+
+**minimum**: the value of this number must greater than or equal to: `1`
diff --git a/core/alter-backup-input-properties-enableddisabled-status-if-false-the-backup-is-stopped.md b/core/alter-backup-input-properties-enableddisabled-status-if-false-the-backup-is-stopped.md
new file mode 100644
index 000000000..8f479dd2a
--- /dev/null
+++ b/core/alter-backup-input-properties-enableddisabled-status-if-false-the-backup-is-stopped.md
@@ -0,0 +1,15 @@
+# Enabled/disabled status. If \`false\` the backup is stopped. Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-backup-input.json#/properties/enabled
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [alter-backup-input.json\*](cluster/alter-backup-input.json "open original schema") |
+
+## enabled Type
+
+`boolean` ([Enabled/disabled status. If \`false\` the backup is stopped.](alter-backup-input-properties-enableddisabled-status-if-false-the-backup-is-stopped.md))
diff --git a/core/alter-backup-input-properties-module-instances-items.md b/core/alter-backup-input-properties-module-instances-items.md
new file mode 100644
index 000000000..93968ef36
--- /dev/null
+++ b/core/alter-backup-input-properties-module-instances-items.md
@@ -0,0 +1,19 @@
+# Untitled string in alter-backup input Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-backup-input.json#/properties/instances/items
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [alter-backup-input.json\*](cluster/alter-backup-input.json "open original schema") |
+
+## items Type
+
+`string`
+
+## items Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/alter-backup-input-properties-module-instances.md b/core/alter-backup-input-properties-module-instances.md
new file mode 100644
index 000000000..34410f34c
--- /dev/null
+++ b/core/alter-backup-input-properties-module-instances.md
@@ -0,0 +1,15 @@
+# Module instances Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-backup-input.json#/properties/instances
+```
+
+Identifiers of module instances included in the backup
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [alter-backup-input.json\*](cluster/alter-backup-input.json "open original schema") |
+
+## instances Type
+
+`string[]`
diff --git a/core/alter-backup-input-properties-schedule-expression-hint-for-ui.md b/core/alter-backup-input-properties-schedule-expression-hint-for-ui.md
new file mode 100644
index 000000000..3023395ab
--- /dev/null
+++ b/core/alter-backup-input-properties-schedule-expression-hint-for-ui.md
@@ -0,0 +1,15 @@
+# Schedule expression hint for UI Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-backup-input.json#/properties/schedule_hint
+```
+
+Store arbitrary object to ease parsing of `schedule` value
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [alter-backup-input.json\*](cluster/alter-backup-input.json "open original schema") |
+
+## schedule\_hint Type
+
+`object` ([Schedule expression hint for UI](alter-backup-input-properties-schedule-expression-hint-for-ui.md))
diff --git a/core/alter-backup-input-properties-time-schedule-expression.md b/core/alter-backup-input-properties-time-schedule-expression.md
new file mode 100644
index 000000000..2bf00e9d1
--- /dev/null
+++ b/core/alter-backup-input-properties-time-schedule-expression.md
@@ -0,0 +1,21 @@
+# Time schedule expression Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-backup-input.json#/properties/schedule
+```
+
+The string format must be compatible with Calendar Events, described in `systemd.timer` man page
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [alter-backup-input.json\*](cluster/alter-backup-input.json "open original schema") |
+
+## schedule Type
+
+`string` ([Time schedule expression](alter-backup-input-properties-time-schedule-expression.md))
+
+## schedule Constraints
+
+**maximum length**: the maximum number of characters for this string is: `64`
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/alter-backup-input.json b/core/alter-backup-input.json
new file mode 100644
index 000000000..6411897dc
--- /dev/null
+++ b/core/alter-backup-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"alter-backup input","$id":"http://schema.nethserver.org/cluster/alter-backup-input.json","description":"Configure a new backup instance","examples":[{"id":5,"name":"BB daily","schedule":"daily","schedule_hint":{},"retention":"7d","instances":["dokuwiki1","nextcloud1"],"enabled":true}],"type":"object","required":["id","name","instances","schedule","retention","enabled"],"properties":{"id":{"title":"Backup ID","type":"integer","minimum":1},"instances":{"title":"Module instances","description":"Identifiers of module instances included in the backup","type":"array","items":{"type":"string","minLength":1}},"schedule":{"title":"Time schedule expression","description":"The string format must be compatible with Calendar Events, described in `systemd.timer` man page","type":"string","minLength":1,"maxLength":64},"schedule_hint":{"title":"Schedule expression hint for UI","description":"Store arbitrary object to ease parsing of `schedule` value","type":"object"},"retention":{"title":"Backup retention","description":"Number of backup snapshots to store before automatic deletion","type":"integer","minimum":1},"name":{"title":"Backup name","type":"string","minLength":1},"enabled":{"type":"boolean","title":"Enabled/disabled status. If `false` the backup is stopped."}}}
diff --git a/core/alter-backup-input.md b/core/alter-backup-input.md
new file mode 100644
index 000000000..518cea2c8
--- /dev/null
+++ b/core/alter-backup-input.md
@@ -0,0 +1,188 @@
+# alter-backup input Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-backup-input.json
+```
+
+Configure a new backup instance
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [alter-backup-input.json](cluster/alter-backup-input.json "open original schema") |
+
+## alter-backup input Type
+
+`object` ([alter-backup input](alter-backup-input.md))
+
+## alter-backup input Examples
+
+```json
+{
+ "id": 5,
+ "name": "BB daily",
+ "schedule": "daily",
+ "schedule_hint": {},
+ "retention": "7d",
+ "instances": [
+ "dokuwiki1",
+ "nextcloud1"
+ ],
+ "enabled": true
+}
+```
+
+# alter-backup input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------------- | :-------- | :------- | :------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [id](#id) | `integer` | Required | cannot be null | [alter-backup input](alter-backup-input-properties-backup-id.md "http://schema.nethserver.org/cluster/alter-backup-input.json#/properties/id") |
+| [instances](#instances) | `array` | Required | cannot be null | [alter-backup input](alter-backup-input-properties-module-instances.md "http://schema.nethserver.org/cluster/alter-backup-input.json#/properties/instances") |
+| [schedule](#schedule) | `string` | Required | cannot be null | [alter-backup input](alter-backup-input-properties-time-schedule-expression.md "http://schema.nethserver.org/cluster/alter-backup-input.json#/properties/schedule") |
+| [schedule\_hint](#schedule_hint) | `object` | Optional | cannot be null | [alter-backup input](alter-backup-input-properties-schedule-expression-hint-for-ui.md "http://schema.nethserver.org/cluster/alter-backup-input.json#/properties/schedule_hint") |
+| [retention](#retention) | `integer` | Required | cannot be null | [alter-backup input](alter-backup-input-properties-backup-retention.md "http://schema.nethserver.org/cluster/alter-backup-input.json#/properties/retention") |
+| [name](#name) | `string` | Required | cannot be null | [alter-backup input](alter-backup-input-properties-backup-name.md "http://schema.nethserver.org/cluster/alter-backup-input.json#/properties/name") |
+| [enabled](#enabled) | `boolean` | Required | cannot be null | [alter-backup input](alter-backup-input-properties-enableddisabled-status-if-false-the-backup-is-stopped.md "http://schema.nethserver.org/cluster/alter-backup-input.json#/properties/enabled") |
+
+## id
+
+
+
+`id`
+
+* is required
+
+* Type: `integer` ([Backup ID](alter-backup-input-properties-backup-id.md))
+
+* cannot be null
+
+* defined in: [alter-backup input](alter-backup-input-properties-backup-id.md "http://schema.nethserver.org/cluster/alter-backup-input.json#/properties/id")
+
+### id Type
+
+`integer` ([Backup ID](alter-backup-input-properties-backup-id.md))
+
+### id Constraints
+
+**minimum**: the value of this number must greater than or equal to: `1`
+
+## instances
+
+Identifiers of module instances included in the backup
+
+`instances`
+
+* is required
+
+* Type: `string[]`
+
+* cannot be null
+
+* defined in: [alter-backup input](alter-backup-input-properties-module-instances.md "http://schema.nethserver.org/cluster/alter-backup-input.json#/properties/instances")
+
+### instances Type
+
+`string[]`
+
+## schedule
+
+The string format must be compatible with Calendar Events, described in `systemd.timer` man page
+
+`schedule`
+
+* is required
+
+* Type: `string` ([Time schedule expression](alter-backup-input-properties-time-schedule-expression.md))
+
+* cannot be null
+
+* defined in: [alter-backup input](alter-backup-input-properties-time-schedule-expression.md "http://schema.nethserver.org/cluster/alter-backup-input.json#/properties/schedule")
+
+### schedule Type
+
+`string` ([Time schedule expression](alter-backup-input-properties-time-schedule-expression.md))
+
+### schedule Constraints
+
+**maximum length**: the maximum number of characters for this string is: `64`
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## schedule\_hint
+
+Store arbitrary object to ease parsing of `schedule` value
+
+`schedule_hint`
+
+* is optional
+
+* Type: `object` ([Schedule expression hint for UI](alter-backup-input-properties-schedule-expression-hint-for-ui.md))
+
+* cannot be null
+
+* defined in: [alter-backup input](alter-backup-input-properties-schedule-expression-hint-for-ui.md "http://schema.nethserver.org/cluster/alter-backup-input.json#/properties/schedule_hint")
+
+### schedule\_hint Type
+
+`object` ([Schedule expression hint for UI](alter-backup-input-properties-schedule-expression-hint-for-ui.md))
+
+## retention
+
+Number of backup snapshots to store before automatic deletion
+
+`retention`
+
+* is required
+
+* Type: `integer` ([Backup retention](alter-backup-input-properties-backup-retention.md))
+
+* cannot be null
+
+* defined in: [alter-backup input](alter-backup-input-properties-backup-retention.md "http://schema.nethserver.org/cluster/alter-backup-input.json#/properties/retention")
+
+### retention Type
+
+`integer` ([Backup retention](alter-backup-input-properties-backup-retention.md))
+
+### retention Constraints
+
+**minimum**: the value of this number must greater than or equal to: `1`
+
+## name
+
+
+
+`name`
+
+* is required
+
+* Type: `string` ([Backup name](alter-backup-input-properties-backup-name.md))
+
+* cannot be null
+
+* defined in: [alter-backup input](alter-backup-input-properties-backup-name.md "http://schema.nethserver.org/cluster/alter-backup-input.json#/properties/name")
+
+### name Type
+
+`string` ([Backup name](alter-backup-input-properties-backup-name.md))
+
+### name Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## enabled
+
+
+
+`enabled`
+
+* is required
+
+* Type: `boolean` ([Enabled/disabled status. If \`false\` the backup is stopped.](alter-backup-input-properties-enableddisabled-status-if-false-the-backup-is-stopped.md))
+
+* cannot be null
+
+* defined in: [alter-backup input](alter-backup-input-properties-enableddisabled-status-if-false-the-backup-is-stopped.md "http://schema.nethserver.org/cluster/alter-backup-input.json#/properties/enabled")
+
+### enabled Type
+
+`boolean` ([Enabled/disabled status. If \`false\` the backup is stopped.](alter-backup-input-properties-enableddisabled-status-if-false-the-backup-is-stopped.md))
diff --git a/core/alter-backup-repository-input-anyof-0-allof-backblaze-schema-properties-backblaze-provider.md b/core/alter-backup-repository-input-anyof-0-allof-backblaze-schema-properties-backblaze-provider.md
new file mode 100644
index 000000000..3d4394c10
--- /dev/null
+++ b/core/alter-backup-repository-input-anyof-0-allof-backblaze-schema-properties-backblaze-provider.md
@@ -0,0 +1,23 @@
+# BackBlaze provider Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/anyOf/0/allOf/0/properties/provider
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [alter-backup-repository-input.json\*](cluster/alter-backup-repository-input.json "open original schema") |
+
+## provider Type
+
+unknown ([BackBlaze provider](alter-backup-repository-input-anyof-0-allof-backblaze-schema-properties-backblaze-provider.md))
+
+## provider Constraints
+
+**constant**: the value of this property must be equal to:
+
+```json
+"backblaze"
+```
diff --git a/core/alter-backup-repository-input-anyof-0-allof-backblaze-schema-properties.md b/core/alter-backup-repository-input-anyof-0-allof-backblaze-schema-properties.md
new file mode 100644
index 000000000..ede9e872d
--- /dev/null
+++ b/core/alter-backup-repository-input-anyof-0-allof-backblaze-schema-properties.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in alter-backup-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/anyOf/0/allOf/0/properties
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [alter-backup-repository-input.json\*](cluster/alter-backup-repository-input.json "open original schema") |
+
+## properties Type
+
+unknown
diff --git a/core/alter-backup-repository-input-anyof-0-allof-backblaze-schema.md b/core/alter-backup-repository-input-anyof-0-allof-backblaze-schema.md
new file mode 100644
index 000000000..234c99c1d
--- /dev/null
+++ b/core/alter-backup-repository-input-anyof-0-allof-backblaze-schema.md
@@ -0,0 +1,66 @@
+# BackBlaze schema Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/anyOf/0/allOf/0
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [alter-backup-repository-input.json\*](cluster/alter-backup-repository-input.json "open original schema") |
+
+## 0 Type
+
+unknown ([BackBlaze schema](alter-backup-repository-input-anyof-0-allof-backblaze-schema.md))
+
+# 0 Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------ | :------------ | :------- | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [provider](#provider) | Not specified | Optional | cannot be null | [alter-backup-repository input](alter-backup-repository-input-anyof-0-allof-backblaze-schema-properties-backblaze-provider.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/anyOf/0/allOf/0/properties/provider") |
+| [parameters](#parameters) | `object` | Optional | cannot be null | [alter-backup-repository input](alter-backup-repository-input-defs-b2-backblaze-protocol-parameters.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/anyOf/0/allOf/0/properties/parameters") |
+
+## provider
+
+
+
+`provider`
+
+* is optional
+
+* Type: unknown ([BackBlaze provider](alter-backup-repository-input-anyof-0-allof-backblaze-schema-properties-backblaze-provider.md))
+
+* cannot be null
+
+* defined in: [alter-backup-repository input](alter-backup-repository-input-anyof-0-allof-backblaze-schema-properties-backblaze-provider.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/anyOf/0/allOf/0/properties/provider")
+
+### provider Type
+
+unknown ([BackBlaze provider](alter-backup-repository-input-anyof-0-allof-backblaze-schema-properties-backblaze-provider.md))
+
+### provider Constraints
+
+**constant**: the value of this property must be equal to:
+
+```json
+"backblaze"
+```
+
+## parameters
+
+
+
+`parameters`
+
+* is optional
+
+* Type: `object` ([B2 (Backblaze) protocol parameters](alter-backup-repository-input-defs-b2-backblaze-protocol-parameters.md))
+
+* cannot be null
+
+* defined in: [alter-backup-repository input](alter-backup-repository-input-defs-b2-backblaze-protocol-parameters.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/anyOf/0/allOf/0/properties/parameters")
+
+### parameters Type
+
+`object` ([B2 (Backblaze) protocol parameters](alter-backup-repository-input-defs-b2-backblaze-protocol-parameters.md))
diff --git a/core/alter-backup-repository-input-anyof-0.md b/core/alter-backup-repository-input-anyof-0.md
new file mode 100644
index 000000000..7f2493fa0
--- /dev/null
+++ b/core/alter-backup-repository-input-anyof-0.md
@@ -0,0 +1,19 @@
+# Untitled undefined type in alter-backup-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/anyOf/0
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [alter-backup-repository-input.json\*](cluster/alter-backup-repository-input.json "open original schema") |
+
+## 0 Type
+
+merged type ([Details](alter-backup-repository-input-anyof-0.md))
+
+all of
+
+* [BackBlaze schema](alter-backup-repository-input-anyof-0-allof-backblaze-schema.md "check type definition")
diff --git a/core/alter-backup-repository-input-anyof-1-allof-s3-based-provider-schema-properties-s3-providers.md b/core/alter-backup-repository-input-anyof-1-allof-s3-based-provider-schema-properties-s3-providers.md
new file mode 100644
index 000000000..6964257be
--- /dev/null
+++ b/core/alter-backup-repository-input-anyof-1-allof-s3-based-provider-schema-properties-s3-providers.md
@@ -0,0 +1,25 @@
+# S3 providers Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/anyOf/1/allOf/0/properties/provider
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [alter-backup-repository-input.json\*](cluster/alter-backup-repository-input.json "open original schema") |
+
+## provider Type
+
+unknown ([S3 providers](alter-backup-repository-input-anyof-1-allof-s3-based-provider-schema-properties-s3-providers.md))
+
+## provider Constraints
+
+**enum**: the value of this property must be equal to one of the following values:
+
+| Value | Explanation |
+| :--------------- | :---------- |
+| `"aws"` | |
+| `"digitalocean"` | |
+| `"generic-s3"` | |
diff --git a/core/alter-backup-repository-input-anyof-1-allof-s3-based-provider-schema-properties.md b/core/alter-backup-repository-input-anyof-1-allof-s3-based-provider-schema-properties.md
new file mode 100644
index 000000000..1811f5951
--- /dev/null
+++ b/core/alter-backup-repository-input-anyof-1-allof-s3-based-provider-schema-properties.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in alter-backup-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/anyOf/1/allOf/0/properties
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [alter-backup-repository-input.json\*](cluster/alter-backup-repository-input.json "open original schema") |
+
+## properties Type
+
+unknown
diff --git a/core/alter-backup-repository-input-anyof-1-allof-s3-based-provider-schema.md b/core/alter-backup-repository-input-anyof-1-allof-s3-based-provider-schema.md
new file mode 100644
index 000000000..c496bf38e
--- /dev/null
+++ b/core/alter-backup-repository-input-anyof-1-allof-s3-based-provider-schema.md
@@ -0,0 +1,68 @@
+# S3-based provider schema Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/anyOf/1/allOf/0
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [alter-backup-repository-input.json\*](cluster/alter-backup-repository-input.json "open original schema") |
+
+## 0 Type
+
+unknown ([S3-based provider schema](alter-backup-repository-input-anyof-1-allof-s3-based-provider-schema.md))
+
+# 0 Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------ | :------------ | :------- | :------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [provider](#provider) | Not specified | Optional | cannot be null | [alter-backup-repository input](alter-backup-repository-input-anyof-1-allof-s3-based-provider-schema-properties-s3-providers.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/anyOf/1/allOf/0/properties/provider") |
+| [parameters](#parameters) | `object` | Optional | cannot be null | [alter-backup-repository input](alter-backup-repository-input-defs-s3-amazon-aws-protocol-parameters.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/anyOf/1/allOf/0/properties/parameters") |
+
+## provider
+
+
+
+`provider`
+
+* is optional
+
+* Type: unknown ([S3 providers](alter-backup-repository-input-anyof-1-allof-s3-based-provider-schema-properties-s3-providers.md))
+
+* cannot be null
+
+* defined in: [alter-backup-repository input](alter-backup-repository-input-anyof-1-allof-s3-based-provider-schema-properties-s3-providers.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/anyOf/1/allOf/0/properties/provider")
+
+### provider Type
+
+unknown ([S3 providers](alter-backup-repository-input-anyof-1-allof-s3-based-provider-schema-properties-s3-providers.md))
+
+### provider Constraints
+
+**enum**: the value of this property must be equal to one of the following values:
+
+| Value | Explanation |
+| :--------------- | :---------- |
+| `"aws"` | |
+| `"digitalocean"` | |
+| `"generic-s3"` | |
+
+## parameters
+
+
+
+`parameters`
+
+* is optional
+
+* Type: `object` ([S3 (Amazon AWS) protocol parameters](alter-backup-repository-input-defs-s3-amazon-aws-protocol-parameters.md))
+
+* cannot be null
+
+* defined in: [alter-backup-repository input](alter-backup-repository-input-defs-s3-amazon-aws-protocol-parameters.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/anyOf/1/allOf/0/properties/parameters")
+
+### parameters Type
+
+`object` ([S3 (Amazon AWS) protocol parameters](alter-backup-repository-input-defs-s3-amazon-aws-protocol-parameters.md))
diff --git a/core/alter-backup-repository-input-anyof-1.md b/core/alter-backup-repository-input-anyof-1.md
new file mode 100644
index 000000000..0b3daf4af
--- /dev/null
+++ b/core/alter-backup-repository-input-anyof-1.md
@@ -0,0 +1,19 @@
+# Untitled undefined type in alter-backup-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/anyOf/1
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [alter-backup-repository-input.json\*](cluster/alter-backup-repository-input.json "open original schema") |
+
+## 1 Type
+
+merged type ([Details](alter-backup-repository-input-anyof-1.md))
+
+all of
+
+* [S3-based provider schema](alter-backup-repository-input-anyof-1-allof-s3-based-provider-schema.md "check type definition")
diff --git a/core/alter-backup-repository-input-anyof-2-allof-smb-schema-properties-smb-provider.md b/core/alter-backup-repository-input-anyof-2-allof-smb-schema-properties-smb-provider.md
new file mode 100644
index 000000000..faab4ead2
--- /dev/null
+++ b/core/alter-backup-repository-input-anyof-2-allof-smb-schema-properties-smb-provider.md
@@ -0,0 +1,23 @@
+# SMB provider Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/anyOf/2/allOf/0/properties/provider
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [alter-backup-repository-input.json\*](cluster/alter-backup-repository-input.json "open original schema") |
+
+## provider Type
+
+unknown ([SMB provider](alter-backup-repository-input-anyof-2-allof-smb-schema-properties-smb-provider.md))
+
+## provider Constraints
+
+**constant**: the value of this property must be equal to:
+
+```json
+"smb"
+```
diff --git a/core/alter-backup-repository-input-anyof-2-allof-smb-schema-properties.md b/core/alter-backup-repository-input-anyof-2-allof-smb-schema-properties.md
new file mode 100644
index 000000000..298058c48
--- /dev/null
+++ b/core/alter-backup-repository-input-anyof-2-allof-smb-schema-properties.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in alter-backup-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/anyOf/2/allOf/0/properties
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [alter-backup-repository-input.json\*](cluster/alter-backup-repository-input.json "open original schema") |
+
+## properties Type
+
+unknown
diff --git a/core/alter-backup-repository-input-anyof-2-allof-smb-schema.md b/core/alter-backup-repository-input-anyof-2-allof-smb-schema.md
new file mode 100644
index 000000000..7e47af9f2
--- /dev/null
+++ b/core/alter-backup-repository-input-anyof-2-allof-smb-schema.md
@@ -0,0 +1,66 @@
+# SMB schema Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/anyOf/2/allOf/0
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [alter-backup-repository-input.json\*](cluster/alter-backup-repository-input.json "open original schema") |
+
+## 0 Type
+
+unknown ([SMB schema](alter-backup-repository-input-anyof-2-allof-smb-schema.md))
+
+# 0 Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------ | :------------ | :------- | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [provider](#provider) | Not specified | Optional | cannot be null | [alter-backup-repository input](alter-backup-repository-input-anyof-2-allof-smb-schema-properties-smb-provider.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/anyOf/2/allOf/0/properties/provider") |
+| [parameters](#parameters) | `object` | Optional | cannot be null | [alter-backup-repository input](alter-backup-repository-input-defs-smb-rclone-parameters.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/anyOf/2/allOf/0/properties/parameters") |
+
+## provider
+
+
+
+`provider`
+
+* is optional
+
+* Type: unknown ([SMB provider](alter-backup-repository-input-anyof-2-allof-smb-schema-properties-smb-provider.md))
+
+* cannot be null
+
+* defined in: [alter-backup-repository input](alter-backup-repository-input-anyof-2-allof-smb-schema-properties-smb-provider.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/anyOf/2/allOf/0/properties/provider")
+
+### provider Type
+
+unknown ([SMB provider](alter-backup-repository-input-anyof-2-allof-smb-schema-properties-smb-provider.md))
+
+### provider Constraints
+
+**constant**: the value of this property must be equal to:
+
+```json
+"smb"
+```
+
+## parameters
+
+
+
+`parameters`
+
+* is optional
+
+* Type: `object` ([SMB Rclone parameters](alter-backup-repository-input-defs-smb-rclone-parameters.md))
+
+* cannot be null
+
+* defined in: [alter-backup-repository input](alter-backup-repository-input-defs-smb-rclone-parameters.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/anyOf/2/allOf/0/properties/parameters")
+
+### parameters Type
+
+`object` ([SMB Rclone parameters](alter-backup-repository-input-defs-smb-rclone-parameters.md))
diff --git a/core/alter-backup-repository-input-anyof-2.md b/core/alter-backup-repository-input-anyof-2.md
new file mode 100644
index 000000000..eaf28012a
--- /dev/null
+++ b/core/alter-backup-repository-input-anyof-2.md
@@ -0,0 +1,19 @@
+# Untitled undefined type in alter-backup-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/anyOf/2
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [alter-backup-repository-input.json\*](cluster/alter-backup-repository-input.json "open original schema") |
+
+## 2 Type
+
+merged type ([Details](alter-backup-repository-input-anyof-2.md))
+
+all of
+
+* [SMB schema](alter-backup-repository-input-anyof-2-allof-smb-schema.md "check type definition")
diff --git a/core/alter-backup-repository-input-anyof-3-allof-local-storage-properties-cluster-internal-provider.md b/core/alter-backup-repository-input-anyof-3-allof-local-storage-properties-cluster-internal-provider.md
new file mode 100644
index 000000000..7b299d4ed
--- /dev/null
+++ b/core/alter-backup-repository-input-anyof-3-allof-local-storage-properties-cluster-internal-provider.md
@@ -0,0 +1,23 @@
+# Cluster internal provider Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/anyOf/3/allOf/0/properties/provider
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [alter-backup-repository-input.json\*](cluster/alter-backup-repository-input.json "open original schema") |
+
+## provider Type
+
+unknown ([Cluster internal provider](alter-backup-repository-input-anyof-3-allof-local-storage-properties-cluster-internal-provider.md))
+
+## provider Constraints
+
+**constant**: the value of this property must be equal to:
+
+```json
+"cluster"
+```
diff --git a/core/alter-backup-repository-input-anyof-3-allof-local-storage-properties-url.md b/core/alter-backup-repository-input-anyof-3-allof-local-storage-properties-url.md
new file mode 100644
index 000000000..bff3b20cc
--- /dev/null
+++ b/core/alter-backup-repository-input-anyof-3-allof-local-storage-properties-url.md
@@ -0,0 +1,25 @@
+# Untitled undefined type in alter-backup-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/anyOf/3/allOf/0/properties/url
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [alter-backup-repository-input.json\*](cluster/alter-backup-repository-input.json "open original schema") |
+
+## url Type
+
+unknown
+
+## url Constraints
+
+**pattern**: the string must match the following regular expression:
+
+```regexp
+^webdav:.+$
+```
+
+[try pattern](https://regexr.com/?expression=%5Ewebdav%3A.%2B%24 "try regular expression with regexr.com")
diff --git a/core/alter-backup-repository-input-anyof-3-allof-local-storage-properties.md b/core/alter-backup-repository-input-anyof-3-allof-local-storage-properties.md
new file mode 100644
index 000000000..87af82746
--- /dev/null
+++ b/core/alter-backup-repository-input-anyof-3-allof-local-storage-properties.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in alter-backup-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/anyOf/3/allOf/0/properties
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [alter-backup-repository-input.json\*](cluster/alter-backup-repository-input.json "open original schema") |
+
+## properties Type
+
+unknown
diff --git a/core/alter-backup-repository-input-anyof-3-allof-local-storage.md b/core/alter-backup-repository-input-anyof-3-allof-local-storage.md
new file mode 100644
index 000000000..69c00a54d
--- /dev/null
+++ b/core/alter-backup-repository-input-anyof-3-allof-local-storage.md
@@ -0,0 +1,95 @@
+# Local storage Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/anyOf/3/allOf/0
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [alter-backup-repository-input.json\*](cluster/alter-backup-repository-input.json "open original schema") |
+
+## 0 Type
+
+unknown ([Local storage](alter-backup-repository-input-anyof-3-allof-local-storage.md))
+
+# 0 Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------ | :------------ | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| [provider](#provider) | Not specified | Optional | cannot be null | [alter-backup-repository input](alter-backup-repository-input-anyof-3-allof-local-storage-properties-cluster-internal-provider.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/anyOf/3/allOf/0/properties/provider") |
+| [url](#url) | Not specified | Optional | cannot be null | [alter-backup-repository input](alter-backup-repository-input-anyof-3-allof-local-storage-properties-url.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/anyOf/3/allOf/0/properties/url") |
+| [parameters](#parameters) | `object` | Optional | cannot be null | [alter-backup-repository input](alter-backup-repository-input-defs-cluster-internal-rclone-parameters.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/anyOf/3/allOf/0/properties/parameters") |
+
+## provider
+
+
+
+`provider`
+
+* is optional
+
+* Type: unknown ([Cluster internal provider](alter-backup-repository-input-anyof-3-allof-local-storage-properties-cluster-internal-provider.md))
+
+* cannot be null
+
+* defined in: [alter-backup-repository input](alter-backup-repository-input-anyof-3-allof-local-storage-properties-cluster-internal-provider.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/anyOf/3/allOf/0/properties/provider")
+
+### provider Type
+
+unknown ([Cluster internal provider](alter-backup-repository-input-anyof-3-allof-local-storage-properties-cluster-internal-provider.md))
+
+### provider Constraints
+
+**constant**: the value of this property must be equal to:
+
+```json
+"cluster"
+```
+
+## url
+
+
+
+`url`
+
+* is optional
+
+* Type: unknown
+
+* cannot be null
+
+* defined in: [alter-backup-repository input](alter-backup-repository-input-anyof-3-allof-local-storage-properties-url.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/anyOf/3/allOf/0/properties/url")
+
+### url Type
+
+unknown
+
+### url Constraints
+
+**pattern**: the string must match the following regular expression:
+
+```regexp
+^webdav:.+$
+```
+
+[try pattern](https://regexr.com/?expression=%5Ewebdav%3A.%2B%24 "try regular expression with regexr.com")
+
+## parameters
+
+
+
+`parameters`
+
+* is optional
+
+* Type: `object` ([Cluster-internal Rclone parameters](alter-backup-repository-input-defs-cluster-internal-rclone-parameters.md))
+
+* cannot be null
+
+* defined in: [alter-backup-repository input](alter-backup-repository-input-defs-cluster-internal-rclone-parameters.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/anyOf/3/allOf/0/properties/parameters")
+
+### parameters Type
+
+`object` ([Cluster-internal Rclone parameters](alter-backup-repository-input-defs-cluster-internal-rclone-parameters.md))
diff --git a/core/alter-backup-repository-input-anyof-3.md b/core/alter-backup-repository-input-anyof-3.md
new file mode 100644
index 000000000..3523a9609
--- /dev/null
+++ b/core/alter-backup-repository-input-anyof-3.md
@@ -0,0 +1,19 @@
+# Untitled undefined type in alter-backup-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/anyOf/3
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [alter-backup-repository-input.json\*](cluster/alter-backup-repository-input.json "open original schema") |
+
+## 3 Type
+
+merged type ([Details](alter-backup-repository-input-anyof-3.md))
+
+all of
+
+* [Local storage](alter-backup-repository-input-anyof-3-allof-local-storage.md "check type definition")
diff --git a/core/alter-backup-repository-input-defs-b2-backblaze-protocol-parameters-properties-b2_account_id.md b/core/alter-backup-repository-input-defs-b2-backblaze-protocol-parameters-properties-b2_account_id.md
new file mode 100644
index 000000000..f042aa93b
--- /dev/null
+++ b/core/alter-backup-repository-input-defs-b2-backblaze-protocol-parameters-properties-b2_account_id.md
@@ -0,0 +1,15 @@
+# Untitled string in alter-backup-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/b2_parameters/properties/b2_account_id
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [alter-backup-repository-input.json\*](cluster/alter-backup-repository-input.json "open original schema") |
+
+## b2\_account\_id Type
+
+`string`
diff --git a/core/alter-backup-repository-input-defs-b2-backblaze-protocol-parameters-properties-b2_account_key.md b/core/alter-backup-repository-input-defs-b2-backblaze-protocol-parameters-properties-b2_account_key.md
new file mode 100644
index 000000000..d6ae3fddc
--- /dev/null
+++ b/core/alter-backup-repository-input-defs-b2-backblaze-protocol-parameters-properties-b2_account_key.md
@@ -0,0 +1,15 @@
+# Untitled string in alter-backup-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/b2_parameters/properties/b2_account_key
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [alter-backup-repository-input.json\*](cluster/alter-backup-repository-input.json "open original schema") |
+
+## b2\_account\_key Type
+
+`string`
diff --git a/core/alter-backup-repository-input-defs-b2-backblaze-protocol-parameters.md b/core/alter-backup-repository-input-defs-b2-backblaze-protocol-parameters.md
new file mode 100644
index 000000000..675fa8563
--- /dev/null
+++ b/core/alter-backup-repository-input-defs-b2-backblaze-protocol-parameters.md
@@ -0,0 +1,58 @@
+# B2 (Backblaze) protocol parameters Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/b2_parameters
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Forbidden | none | [alter-backup-repository-input.json\*](cluster/alter-backup-repository-input.json "open original schema") |
+
+## b2\_parameters Type
+
+`object` ([B2 (Backblaze) protocol parameters](alter-backup-repository-input-defs-b2-backblaze-protocol-parameters.md))
+
+# b2\_parameters Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :---------------------------------- | :------- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [b2\_account\_id](#b2_account_id) | `string` | Required | cannot be null | [alter-backup-repository input](alter-backup-repository-input-defs-b2-backblaze-protocol-parameters-properties-b2_account_id.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/b2_parameters/properties/b2_account_id") |
+| [b2\_account\_key](#b2_account_key) | `string` | Required | cannot be null | [alter-backup-repository input](alter-backup-repository-input-defs-b2-backblaze-protocol-parameters-properties-b2_account_key.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/b2_parameters/properties/b2_account_key") |
+
+## b2\_account\_id
+
+
+
+`b2_account_id`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [alter-backup-repository input](alter-backup-repository-input-defs-b2-backblaze-protocol-parameters-properties-b2_account_id.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/b2_parameters/properties/b2_account_id")
+
+### b2\_account\_id Type
+
+`string`
+
+## b2\_account\_key
+
+
+
+`b2_account_key`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [alter-backup-repository input](alter-backup-repository-input-defs-b2-backblaze-protocol-parameters-properties-b2_account_key.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/b2_parameters/properties/b2_account_key")
+
+### b2\_account\_key Type
+
+`string`
diff --git a/core/alter-backup-repository-input-defs-cluster-internal-rclone-parameters.md b/core/alter-backup-repository-input-defs-cluster-internal-rclone-parameters.md
new file mode 100644
index 000000000..0ee73525b
--- /dev/null
+++ b/core/alter-backup-repository-input-defs-cluster-internal-rclone-parameters.md
@@ -0,0 +1,20 @@
+# Cluster-internal Rclone parameters Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/cluster_parameters
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Forbidden | none | [alter-backup-repository-input.json\*](cluster/alter-backup-repository-input.json "open original schema") |
+
+## cluster\_parameters Type
+
+`object` ([Cluster-internal Rclone parameters](alter-backup-repository-input-defs-cluster-internal-rclone-parameters.md))
+
+# cluster\_parameters Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------- | :--- | :------- | :------- | :--------- |
diff --git a/core/alter-backup-repository-input-defs-s3-amazon-aws-protocol-parameters-properties-aws_access_key_id.md b/core/alter-backup-repository-input-defs-s3-amazon-aws-protocol-parameters-properties-aws_access_key_id.md
new file mode 100644
index 000000000..1e399d28c
--- /dev/null
+++ b/core/alter-backup-repository-input-defs-s3-amazon-aws-protocol-parameters-properties-aws_access_key_id.md
@@ -0,0 +1,15 @@
+# Untitled string in alter-backup-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/s3_parameters/properties/aws_access_key_id
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [alter-backup-repository-input.json\*](cluster/alter-backup-repository-input.json "open original schema") |
+
+## aws\_access\_key\_id Type
+
+`string`
diff --git a/core/alter-backup-repository-input-defs-s3-amazon-aws-protocol-parameters-properties-aws_default_region.md b/core/alter-backup-repository-input-defs-s3-amazon-aws-protocol-parameters-properties-aws_default_region.md
new file mode 100644
index 000000000..52c7b3d47
--- /dev/null
+++ b/core/alter-backup-repository-input-defs-s3-amazon-aws-protocol-parameters-properties-aws_default_region.md
@@ -0,0 +1,15 @@
+# Untitled string in alter-backup-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/s3_parameters/properties/aws_default_region
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [alter-backup-repository-input.json\*](cluster/alter-backup-repository-input.json "open original schema") |
+
+## aws\_default\_region Type
+
+`string`
diff --git a/core/alter-backup-repository-input-defs-s3-amazon-aws-protocol-parameters-properties-aws_secret_access_key.md b/core/alter-backup-repository-input-defs-s3-amazon-aws-protocol-parameters-properties-aws_secret_access_key.md
new file mode 100644
index 000000000..b194c01b7
--- /dev/null
+++ b/core/alter-backup-repository-input-defs-s3-amazon-aws-protocol-parameters-properties-aws_secret_access_key.md
@@ -0,0 +1,15 @@
+# Untitled string in alter-backup-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/s3_parameters/properties/aws_secret_access_key
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [alter-backup-repository-input.json\*](cluster/alter-backup-repository-input.json "open original schema") |
+
+## aws\_secret\_access\_key Type
+
+`string`
diff --git a/core/alter-backup-repository-input-defs-s3-amazon-aws-protocol-parameters.md b/core/alter-backup-repository-input-defs-s3-amazon-aws-protocol-parameters.md
new file mode 100644
index 000000000..305313b7e
--- /dev/null
+++ b/core/alter-backup-repository-input-defs-s3-amazon-aws-protocol-parameters.md
@@ -0,0 +1,77 @@
+# S3 (Amazon AWS) protocol parameters Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/s3_parameters
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Forbidden | none | [alter-backup-repository-input.json\*](cluster/alter-backup-repository-input.json "open original schema") |
+
+## s3\_parameters Type
+
+`object` ([S3 (Amazon AWS) protocol parameters](alter-backup-repository-input-defs-s3-amazon-aws-protocol-parameters.md))
+
+# s3\_parameters Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------------------------------- | :------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| [aws\_default\_region](#aws_default_region) | `string` | Optional | cannot be null | [alter-backup-repository input](alter-backup-repository-input-defs-s3-amazon-aws-protocol-parameters-properties-aws_default_region.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/s3_parameters/properties/aws_default_region") |
+| [aws\_access\_key\_id](#aws_access_key_id) | `string` | Required | cannot be null | [alter-backup-repository input](alter-backup-repository-input-defs-s3-amazon-aws-protocol-parameters-properties-aws_access_key_id.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/s3_parameters/properties/aws_access_key_id") |
+| [aws\_secret\_access\_key](#aws_secret_access_key) | `string` | Required | cannot be null | [alter-backup-repository input](alter-backup-repository-input-defs-s3-amazon-aws-protocol-parameters-properties-aws_secret_access_key.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/s3_parameters/properties/aws_secret_access_key") |
+
+## aws\_default\_region
+
+
+
+`aws_default_region`
+
+* is optional
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [alter-backup-repository input](alter-backup-repository-input-defs-s3-amazon-aws-protocol-parameters-properties-aws_default_region.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/s3_parameters/properties/aws_default_region")
+
+### aws\_default\_region Type
+
+`string`
+
+## aws\_access\_key\_id
+
+
+
+`aws_access_key_id`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [alter-backup-repository input](alter-backup-repository-input-defs-s3-amazon-aws-protocol-parameters-properties-aws_access_key_id.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/s3_parameters/properties/aws_access_key_id")
+
+### aws\_access\_key\_id Type
+
+`string`
+
+## aws\_secret\_access\_key
+
+
+
+`aws_secret_access_key`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [alter-backup-repository input](alter-backup-repository-input-defs-s3-amazon-aws-protocol-parameters-properties-aws_secret_access_key.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/s3_parameters/properties/aws_secret_access_key")
+
+### aws\_secret\_access\_key Type
+
+`string`
diff --git a/core/alter-backup-repository-input-defs-smb-rclone-parameters-properties-smb_domain.md b/core/alter-backup-repository-input-defs-smb-rclone-parameters-properties-smb_domain.md
new file mode 100644
index 000000000..ea9ace0a4
--- /dev/null
+++ b/core/alter-backup-repository-input-defs-smb-rclone-parameters-properties-smb_domain.md
@@ -0,0 +1,15 @@
+# Untitled string in alter-backup-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/smb_parameters/properties/smb_domain
+```
+
+The short form (NT-style) domain name
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [alter-backup-repository-input.json\*](cluster/alter-backup-repository-input.json "open original schema") |
+
+## smb\_domain Type
+
+`string`
diff --git a/core/alter-backup-repository-input-defs-smb-rclone-parameters-properties-smb_host.md b/core/alter-backup-repository-input-defs-smb-rclone-parameters-properties-smb_host.md
new file mode 100644
index 000000000..8e40c8d0a
--- /dev/null
+++ b/core/alter-backup-repository-input-defs-smb-rclone-parameters-properties-smb_host.md
@@ -0,0 +1,21 @@
+# Untitled string in alter-backup-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/smb_parameters/properties/smb_host
+```
+
+Host name or IP address
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [alter-backup-repository-input.json\*](cluster/alter-backup-repository-input.json "open original schema") |
+
+## smb\_host Type
+
+`string`
+
+## smb\_host Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+**hostname**: the string must be a hostname, according to [RFC 1123, section 2.1](https://tools.ietf.org/html/rfc1123 "check the specification")
diff --git a/core/alter-backup-repository-input-defs-smb-rclone-parameters-properties-smb_pass.md b/core/alter-backup-repository-input-defs-smb-rclone-parameters-properties-smb_pass.md
new file mode 100644
index 000000000..5d9562fdb
--- /dev/null
+++ b/core/alter-backup-repository-input-defs-smb-rclone-parameters-properties-smb_pass.md
@@ -0,0 +1,15 @@
+# Untitled string in alter-backup-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/smb_parameters/properties/smb_pass
+```
+
+User password for share connection
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [alter-backup-repository-input.json\*](cluster/alter-backup-repository-input.json "open original schema") |
+
+## smb\_pass Type
+
+`string`
diff --git a/core/alter-backup-repository-input-defs-smb-rclone-parameters-properties-smb_user.md b/core/alter-backup-repository-input-defs-smb-rclone-parameters-properties-smb_user.md
new file mode 100644
index 000000000..7477374a8
--- /dev/null
+++ b/core/alter-backup-repository-input-defs-smb-rclone-parameters-properties-smb_user.md
@@ -0,0 +1,19 @@
+# Untitled string in alter-backup-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/smb_parameters/properties/smb_user
+```
+
+User name for share connection
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [alter-backup-repository-input.json\*](cluster/alter-backup-repository-input.json "open original schema") |
+
+## smb\_user Type
+
+`string`
+
+## smb\_user Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/alter-backup-repository-input-defs-smb-rclone-parameters.md b/core/alter-backup-repository-input-defs-smb-rclone-parameters.md
new file mode 100644
index 000000000..3924a126d
--- /dev/null
+++ b/core/alter-backup-repository-input-defs-smb-rclone-parameters.md
@@ -0,0 +1,106 @@
+# SMB Rclone parameters Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/smb_parameters
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Forbidden | none | [alter-backup-repository-input.json\*](cluster/alter-backup-repository-input.json "open original schema") |
+
+## smb\_parameters Type
+
+`object` ([SMB Rclone parameters](alter-backup-repository-input-defs-smb-rclone-parameters.md))
+
+# smb\_parameters Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------- | :------- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [smb\_host](#smb_host) | `string` | Required | cannot be null | [alter-backup-repository input](alter-backup-repository-input-defs-smb-rclone-parameters-properties-smb_host.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/smb_parameters/properties/smb_host") |
+| [smb\_user](#smb_user) | `string` | Required | cannot be null | [alter-backup-repository input](alter-backup-repository-input-defs-smb-rclone-parameters-properties-smb_user.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/smb_parameters/properties/smb_user") |
+| [smb\_pass](#smb_pass) | `string` | Required | cannot be null | [alter-backup-repository input](alter-backup-repository-input-defs-smb-rclone-parameters-properties-smb_pass.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/smb_parameters/properties/smb_pass") |
+| [smb\_domain](#smb_domain) | `string` | Required | cannot be null | [alter-backup-repository input](alter-backup-repository-input-defs-smb-rclone-parameters-properties-smb_domain.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/smb_parameters/properties/smb_domain") |
+
+## smb\_host
+
+Host name or IP address
+
+`smb_host`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [alter-backup-repository input](alter-backup-repository-input-defs-smb-rclone-parameters-properties-smb_host.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/smb_parameters/properties/smb_host")
+
+### smb\_host Type
+
+`string`
+
+### smb\_host Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+**hostname**: the string must be a hostname, according to [RFC 1123, section 2.1](https://tools.ietf.org/html/rfc1123 "check the specification")
+
+## smb\_user
+
+User name for share connection
+
+`smb_user`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [alter-backup-repository input](alter-backup-repository-input-defs-smb-rclone-parameters-properties-smb_user.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/smb_parameters/properties/smb_user")
+
+### smb\_user Type
+
+`string`
+
+### smb\_user Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## smb\_pass
+
+User password for share connection
+
+`smb_pass`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [alter-backup-repository input](alter-backup-repository-input-defs-smb-rclone-parameters-properties-smb_pass.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/smb_parameters/properties/smb_pass")
+
+### smb\_pass Type
+
+`string`
+
+## smb\_domain
+
+The short form (NT-style) domain name
+
+`smb_domain`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [alter-backup-repository input](alter-backup-repository-input-defs-smb-rclone-parameters-properties-smb_domain.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/smb_parameters/properties/smb_domain")
+
+### smb\_domain Type
+
+`string`
diff --git a/core/alter-backup-repository-input-defs.md b/core/alter-backup-repository-input-defs.md
new file mode 100644
index 000000000..5ec0f6848
--- /dev/null
+++ b/core/alter-backup-repository-input-defs.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in alter-backup-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [alter-backup-repository-input.json\*](cluster/alter-backup-repository-input.json "open original schema") |
+
+## $defs Type
+
+unknown
diff --git a/core/alter-backup-repository-input-properties-backup-repository-id.md b/core/alter-backup-repository-input-properties-backup-repository-id.md
new file mode 100644
index 000000000..a0be6c957
--- /dev/null
+++ b/core/alter-backup-repository-input-properties-backup-repository-id.md
@@ -0,0 +1,19 @@
+# Backup repository ID Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/properties/id
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [alter-backup-repository-input.json\*](cluster/alter-backup-repository-input.json "open original schema") |
+
+## id Type
+
+`string` ([Backup repository ID](alter-backup-repository-input-properties-backup-repository-id.md))
+
+## id Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/alter-backup-repository-input-properties-backup-repository-name.md b/core/alter-backup-repository-input-properties-backup-repository-name.md
new file mode 100644
index 000000000..0a30174cf
--- /dev/null
+++ b/core/alter-backup-repository-input-properties-backup-repository-name.md
@@ -0,0 +1,15 @@
+# Backup repository name Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/properties/name
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [alter-backup-repository-input.json\*](cluster/alter-backup-repository-input.json "open original schema") |
+
+## name Type
+
+`string` ([Backup repository name](alter-backup-repository-input-properties-backup-repository-name.md))
diff --git a/core/alter-backup-repository-input-properties-connection-parameters.md b/core/alter-backup-repository-input-properties-connection-parameters.md
new file mode 100644
index 000000000..7820b49d9
--- /dev/null
+++ b/core/alter-backup-repository-input-properties-connection-parameters.md
@@ -0,0 +1,15 @@
+# Connection parameters Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/properties/parameters
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [alter-backup-repository-input.json\*](cluster/alter-backup-repository-input.json "open original schema") |
+
+## parameters Type
+
+`object` ([Connection parameters](alter-backup-repository-input-properties-connection-parameters.md))
diff --git a/core/alter-backup-repository-input-properties-repository-provider.md b/core/alter-backup-repository-input-properties-repository-provider.md
new file mode 100644
index 000000000..d50f022b7
--- /dev/null
+++ b/core/alter-backup-repository-input-properties-repository-provider.md
@@ -0,0 +1,19 @@
+# Repository provider Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/properties/provider
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [alter-backup-repository-input.json\*](cluster/alter-backup-repository-input.json "open original schema") |
+
+## provider Type
+
+`string` ([Repository provider](alter-backup-repository-input-properties-repository-provider.md))
+
+## provider Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/alter-backup-repository-input.json b/core/alter-backup-repository-input.json
new file mode 100644
index 000000000..33152f5af
--- /dev/null
+++ b/core/alter-backup-repository-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"alter-backup-repository input","$id":"http://schema.nethserver.org/cluster/alter-backup-repository-input.json","description":"Input schema of the alter-backup-repository action","examples":[{"id:":"ce712dfe-b1d0-47f1-a149-a14d1203aab8","provider":"backblaze","name":"repository1","parameters":{"b2_account_id":"YEFYEIOEHGO","b2_account_key":"sdifjsiodv7sdv7suivyhsfv7fvyhdfvb7d"}},{"name":"repository 6","provider":"cluster","password":"","url":"webdav:http://10.5.4.2:4694","parameters":{}}],"type":"object","properties":{"id":{"title":"Backup repository ID","type":"string","minLength":1},"provider":{"type":"string","title":"Repository provider","minLength":1},"name":{"title":"Backup repository name","type":"string"},"parameters":{"type":"object","title":"Connection parameters"}},"required":["id","provider"],"anyOf":[{"allOf":[{"title":"BackBlaze schema","properties":{"provider":{"title":"BackBlaze provider","const":"backblaze"},"parameters":{"$ref":"#/$defs/b2_parameters"}}}]},{"allOf":[{"title":"S3-based provider schema","properties":{"provider":{"title":"S3 providers","enum":["aws","digitalocean","generic-s3"]},"parameters":{"$ref":"#/$defs/s3_parameters"}}}]},{"allOf":[{"title":"SMB schema","properties":{"provider":{"title":"SMB provider","const":"smb"},"parameters":{"$ref":"#/$defs/smb_parameters"}}}]},{"allOf":[{"title":"Local storage","properties":{"provider":{"title":"Cluster internal provider","const":"cluster"},"url":{"pattern":"^webdav:.+$"},"parameters":{"$ref":"#/$defs/cluster_parameters"}}}]}],"$defs":{"b2_parameters":{"title":"B2 (Backblaze) protocol parameters","type":"object","required":["b2_account_id","b2_account_key"],"additionalProperties":false,"properties":{"b2_account_id":{"type":"string"},"b2_account_key":{"type":"string"}}},"s3_parameters":{"title":"S3 (Amazon AWS) protocol parameters","type":"object","required":["aws_access_key_id","aws_secret_access_key"],"additionalProperties":false,"properties":{"aws_default_region":{"type":"string"},"aws_access_key_id":{"type":"string"},"aws_secret_access_key":{"type":"string"}}},"smb_parameters":{"title":"SMB Rclone parameters","type":"object","required":["smb_host","smb_user","smb_pass","smb_domain"],"additionalProperties":false,"properties":{"smb_host":{"type":"string","description":"Host name or IP address","format":"hostname","minLength":1},"smb_user":{"type":"string","description":"User name for share connection","minLength":1},"smb_pass":{"type":"string","description":"User password for share connection"},"smb_domain":{"type":"string","description":"The short form (NT-style) domain name"}}},"cluster_parameters":{"title":"Cluster-internal Rclone parameters","type":"object","additionalProperties":false,"properties":{}}}}
diff --git a/core/alter-backup-repository-input.md b/core/alter-backup-repository-input.md
new file mode 100644
index 000000000..d320bfd1d
--- /dev/null
+++ b/core/alter-backup-repository-input.md
@@ -0,0 +1,373 @@
+# alter-backup-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-backup-repository-input.json
+```
+
+Input schema of the alter-backup-repository action
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [alter-backup-repository-input.json](cluster/alter-backup-repository-input.json "open original schema") |
+
+## alter-backup-repository input Type
+
+`object` ([alter-backup-repository input](alter-backup-repository-input.md))
+
+any of
+
+* all of
+
+ * [BackBlaze schema](alter-backup-repository-input-anyof-0-allof-backblaze-schema.md "check type definition")
+
+* all of
+
+ * [S3-based provider schema](alter-backup-repository-input-anyof-1-allof-s3-based-provider-schema.md "check type definition")
+
+* all of
+
+ * [SMB schema](alter-backup-repository-input-anyof-2-allof-smb-schema.md "check type definition")
+
+* all of
+
+ * [Local storage](alter-backup-repository-input-anyof-3-allof-local-storage.md "check type definition")
+
+## alter-backup-repository input Examples
+
+```json
+{
+ "id:": "ce712dfe-b1d0-47f1-a149-a14d1203aab8",
+ "provider": "backblaze",
+ "name": "repository1",
+ "parameters": {
+ "b2_account_id": "YEFYEIOEHGO",
+ "b2_account_key": "sdifjsiodv7sdv7suivyhsfv7fvyhdfvb7d"
+ }
+}
+```
+
+```json
+{
+ "name": "repository 6",
+ "provider": "cluster",
+ "password": "",
+ "url": "webdav:http://10.5.4.2:4694",
+ "parameters": {}
+}
+```
+
+# alter-backup-repository input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------ | :------- | :------- | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [id](#id) | `string` | Required | cannot be null | [alter-backup-repository input](alter-backup-repository-input-properties-backup-repository-id.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/properties/id") |
+| [provider](#provider) | `string` | Required | cannot be null | [alter-backup-repository input](alter-backup-repository-input-properties-repository-provider.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/properties/provider") |
+| [name](#name) | `string` | Optional | cannot be null | [alter-backup-repository input](alter-backup-repository-input-properties-backup-repository-name.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/properties/name") |
+| [parameters](#parameters) | `object` | Optional | cannot be null | [alter-backup-repository input](alter-backup-repository-input-properties-connection-parameters.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/properties/parameters") |
+
+## id
+
+
+
+`id`
+
+* is required
+
+* Type: `string` ([Backup repository ID](alter-backup-repository-input-properties-backup-repository-id.md))
+
+* cannot be null
+
+* defined in: [alter-backup-repository input](alter-backup-repository-input-properties-backup-repository-id.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/properties/id")
+
+### id Type
+
+`string` ([Backup repository ID](alter-backup-repository-input-properties-backup-repository-id.md))
+
+### id Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## provider
+
+
+
+`provider`
+
+* is required
+
+* Type: `string` ([Repository provider](alter-backup-repository-input-properties-repository-provider.md))
+
+* cannot be null
+
+* defined in: [alter-backup-repository input](alter-backup-repository-input-properties-repository-provider.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/properties/provider")
+
+### provider Type
+
+`string` ([Repository provider](alter-backup-repository-input-properties-repository-provider.md))
+
+### provider Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## name
+
+
+
+`name`
+
+* is optional
+
+* Type: `string` ([Backup repository name](alter-backup-repository-input-properties-backup-repository-name.md))
+
+* cannot be null
+
+* defined in: [alter-backup-repository input](alter-backup-repository-input-properties-backup-repository-name.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/properties/name")
+
+### name Type
+
+`string` ([Backup repository name](alter-backup-repository-input-properties-backup-repository-name.md))
+
+## parameters
+
+
+
+`parameters`
+
+* is optional
+
+* Type: `object` ([Connection parameters](alter-backup-repository-input-properties-connection-parameters.md))
+
+* cannot be null
+
+* defined in: [alter-backup-repository input](alter-backup-repository-input-properties-connection-parameters.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/properties/parameters")
+
+### parameters Type
+
+`object` ([Connection parameters](alter-backup-repository-input-properties-connection-parameters.md))
+
+# alter-backup-repository input Definitions
+
+## Definitions group b2\_parameters
+
+Reference this group by using
+
+```json
+{"$ref":"http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/b2_parameters"}
+```
+
+| Property | Type | Required | Nullable | Defined by |
+| :---------------------------------- | :------- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [b2\_account\_id](#b2_account_id) | `string` | Required | cannot be null | [alter-backup-repository input](alter-backup-repository-input-defs-b2-backblaze-protocol-parameters-properties-b2_account_id.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/b2_parameters/properties/b2_account_id") |
+| [b2\_account\_key](#b2_account_key) | `string` | Required | cannot be null | [alter-backup-repository input](alter-backup-repository-input-defs-b2-backblaze-protocol-parameters-properties-b2_account_key.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/b2_parameters/properties/b2_account_key") |
+
+### b2\_account\_id
+
+
+
+`b2_account_id`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [alter-backup-repository input](alter-backup-repository-input-defs-b2-backblaze-protocol-parameters-properties-b2_account_id.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/b2_parameters/properties/b2_account_id")
+
+#### b2\_account\_id Type
+
+`string`
+
+### b2\_account\_key
+
+
+
+`b2_account_key`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [alter-backup-repository input](alter-backup-repository-input-defs-b2-backblaze-protocol-parameters-properties-b2_account_key.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/b2_parameters/properties/b2_account_key")
+
+#### b2\_account\_key Type
+
+`string`
+
+## Definitions group s3\_parameters
+
+Reference this group by using
+
+```json
+{"$ref":"http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/s3_parameters"}
+```
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------------------------------- | :------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| [aws\_default\_region](#aws_default_region) | `string` | Optional | cannot be null | [alter-backup-repository input](alter-backup-repository-input-defs-s3-amazon-aws-protocol-parameters-properties-aws_default_region.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/s3_parameters/properties/aws_default_region") |
+| [aws\_access\_key\_id](#aws_access_key_id) | `string` | Required | cannot be null | [alter-backup-repository input](alter-backup-repository-input-defs-s3-amazon-aws-protocol-parameters-properties-aws_access_key_id.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/s3_parameters/properties/aws_access_key_id") |
+| [aws\_secret\_access\_key](#aws_secret_access_key) | `string` | Required | cannot be null | [alter-backup-repository input](alter-backup-repository-input-defs-s3-amazon-aws-protocol-parameters-properties-aws_secret_access_key.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/s3_parameters/properties/aws_secret_access_key") |
+
+### aws\_default\_region
+
+
+
+`aws_default_region`
+
+* is optional
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [alter-backup-repository input](alter-backup-repository-input-defs-s3-amazon-aws-protocol-parameters-properties-aws_default_region.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/s3_parameters/properties/aws_default_region")
+
+#### aws\_default\_region Type
+
+`string`
+
+### aws\_access\_key\_id
+
+
+
+`aws_access_key_id`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [alter-backup-repository input](alter-backup-repository-input-defs-s3-amazon-aws-protocol-parameters-properties-aws_access_key_id.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/s3_parameters/properties/aws_access_key_id")
+
+#### aws\_access\_key\_id Type
+
+`string`
+
+### aws\_secret\_access\_key
+
+
+
+`aws_secret_access_key`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [alter-backup-repository input](alter-backup-repository-input-defs-s3-amazon-aws-protocol-parameters-properties-aws_secret_access_key.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/s3_parameters/properties/aws_secret_access_key")
+
+#### aws\_secret\_access\_key Type
+
+`string`
+
+## Definitions group smb\_parameters
+
+Reference this group by using
+
+```json
+{"$ref":"http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/smb_parameters"}
+```
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------- | :------- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [smb\_host](#smb_host) | `string` | Required | cannot be null | [alter-backup-repository input](alter-backup-repository-input-defs-smb-rclone-parameters-properties-smb_host.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/smb_parameters/properties/smb_host") |
+| [smb\_user](#smb_user) | `string` | Required | cannot be null | [alter-backup-repository input](alter-backup-repository-input-defs-smb-rclone-parameters-properties-smb_user.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/smb_parameters/properties/smb_user") |
+| [smb\_pass](#smb_pass) | `string` | Required | cannot be null | [alter-backup-repository input](alter-backup-repository-input-defs-smb-rclone-parameters-properties-smb_pass.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/smb_parameters/properties/smb_pass") |
+| [smb\_domain](#smb_domain) | `string` | Required | cannot be null | [alter-backup-repository input](alter-backup-repository-input-defs-smb-rclone-parameters-properties-smb_domain.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/smb_parameters/properties/smb_domain") |
+
+### smb\_host
+
+Host name or IP address
+
+`smb_host`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [alter-backup-repository input](alter-backup-repository-input-defs-smb-rclone-parameters-properties-smb_host.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/smb_parameters/properties/smb_host")
+
+#### smb\_host Type
+
+`string`
+
+#### smb\_host Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+**hostname**: the string must be a hostname, according to [RFC 1123, section 2.1](https://tools.ietf.org/html/rfc1123 "check the specification")
+
+### smb\_user
+
+User name for share connection
+
+`smb_user`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [alter-backup-repository input](alter-backup-repository-input-defs-smb-rclone-parameters-properties-smb_user.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/smb_parameters/properties/smb_user")
+
+#### smb\_user Type
+
+`string`
+
+#### smb\_user Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+### smb\_pass
+
+User password for share connection
+
+`smb_pass`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [alter-backup-repository input](alter-backup-repository-input-defs-smb-rclone-parameters-properties-smb_pass.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/smb_parameters/properties/smb_pass")
+
+#### smb\_pass Type
+
+`string`
+
+### smb\_domain
+
+The short form (NT-style) domain name
+
+`smb_domain`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [alter-backup-repository input](alter-backup-repository-input-defs-smb-rclone-parameters-properties-smb_domain.md "http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/smb_parameters/properties/smb_domain")
+
+#### smb\_domain Type
+
+`string`
+
+## Definitions group cluster\_parameters
+
+Reference this group by using
+
+```json
+{"$ref":"http://schema.nethserver.org/cluster/alter-backup-repository-input.json#/$defs/cluster_parameters"}
+```
+
+| Property | Type | Required | Nullable | Defined by |
+| :------- | :--- | :------- | :------- | :--------- |
diff --git a/core/alter-repository-input-properties-name.md b/core/alter-repository-input-properties-name.md
new file mode 100644
index 000000000..881b0f15f
--- /dev/null
+++ b/core/alter-repository-input-properties-name.md
@@ -0,0 +1,15 @@
+# Untitled string in alter-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-repository-input.json#/properties/name
+```
+
+Unique repository name
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [alter-repository-input.json\*](cluster/alter-repository-input.json "open original schema") |
+
+## name Type
+
+`string`
diff --git a/core/alter-repository-input-properties-status.md b/core/alter-repository-input-properties-status.md
new file mode 100644
index 000000000..a5a365b20
--- /dev/null
+++ b/core/alter-repository-input-properties-status.md
@@ -0,0 +1,15 @@
+# Untitled boolean in alter-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-repository-input.json#/properties/status
+```
+
+Enable or disable the repository. When 'true', the repository is enabled.
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [alter-repository-input.json\*](cluster/alter-repository-input.json "open original schema") |
+
+## status Type
+
+`boolean`
diff --git a/core/alter-repository-input-properties-testing.md b/core/alter-repository-input-properties-testing.md
new file mode 100644
index 000000000..1f35bd0c7
--- /dev/null
+++ b/core/alter-repository-input-properties-testing.md
@@ -0,0 +1,15 @@
+# Untitled boolean in alter-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-repository-input.json#/properties/testing
+```
+
+Enable or disable access to testing images
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [alter-repository-input.json\*](cluster/alter-repository-input.json "open original schema") |
+
+## testing Type
+
+`boolean`
diff --git a/core/alter-repository-input.json b/core/alter-repository-input.json
new file mode 100644
index 000000000..05ea8d55a
--- /dev/null
+++ b/core/alter-repository-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"alter-repository input","$id":"http://schema.nethserver.org/cluster/alter-repository-input.json","description":"Input schema of the alter-repository action","examples":[{"name":"repository1","testing":true,"status":true}],"type":"object","properties":{"name":{"description":"Unique repository name","type":"string"},"testing":{"description":"Enable or disable access to testing images","type":"boolean"},"status":{"description":"Enable or disable the repository. When 'true', the repository is enabled.","type":"boolean"}},"required":["name","testing","status"]}
diff --git a/core/alter-repository-input.md b/core/alter-repository-input.md
new file mode 100644
index 000000000..edea93395
--- /dev/null
+++ b/core/alter-repository-input.md
@@ -0,0 +1,87 @@
+# alter-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-repository-input.json
+```
+
+Input schema of the alter-repository action
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [alter-repository-input.json](cluster/alter-repository-input.json "open original schema") |
+
+## alter-repository input Type
+
+`object` ([alter-repository input](alter-repository-input.md))
+
+## alter-repository input Examples
+
+```json
+{
+ "name": "repository1",
+ "testing": true,
+ "status": true
+}
+```
+
+# alter-repository input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------ | :-------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| [name](#name) | `string` | Required | cannot be null | [alter-repository input](alter-repository-input-properties-name.md "http://schema.nethserver.org/cluster/alter-repository-input.json#/properties/name") |
+| [testing](#testing) | `boolean` | Required | cannot be null | [alter-repository input](alter-repository-input-properties-testing.md "http://schema.nethserver.org/cluster/alter-repository-input.json#/properties/testing") |
+| [status](#status) | `boolean` | Required | cannot be null | [alter-repository input](alter-repository-input-properties-status.md "http://schema.nethserver.org/cluster/alter-repository-input.json#/properties/status") |
+
+## name
+
+Unique repository name
+
+`name`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [alter-repository input](alter-repository-input-properties-name.md "http://schema.nethserver.org/cluster/alter-repository-input.json#/properties/name")
+
+### name Type
+
+`string`
+
+## testing
+
+Enable or disable access to testing images
+
+`testing`
+
+* is required
+
+* Type: `boolean`
+
+* cannot be null
+
+* defined in: [alter-repository input](alter-repository-input-properties-testing.md "http://schema.nethserver.org/cluster/alter-repository-input.json#/properties/testing")
+
+### testing Type
+
+`boolean`
+
+## status
+
+Enable or disable the repository. When 'true', the repository is enabled.
+
+`status`
+
+* is required
+
+* Type: `boolean`
+
+* cannot be null
+
+* defined in: [alter-repository input](alter-repository-input-properties-status.md "http://schema.nethserver.org/cluster/alter-repository-input.json#/properties/status")
+
+### status Type
+
+`boolean`
diff --git a/core/alter-repository-output.json b/core/alter-repository-output.json
new file mode 100644
index 000000000..836696fbf
--- /dev/null
+++ b/core/alter-repository-output.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"alter-repository output","$id":"http://schema.nethserver.org/cluster/alter-repository-output.json","description":"Output schema of the alter-repository action","examples":[true],"type":"boolean"}
diff --git a/core/alter-repository-output.md b/core/alter-repository-output.md
new file mode 100644
index 000000000..69ff563d7
--- /dev/null
+++ b/core/alter-repository-output.md
@@ -0,0 +1,21 @@
+# alter-repository output Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-repository-output.json
+```
+
+Output schema of the alter-repository action
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [alter-repository-output.json](cluster/alter-repository-output.json "open original schema") |
+
+## alter-repository output Type
+
+`boolean` ([alter-repository output](alter-repository-output.md))
+
+## alter-repository output Examples
+
+```json
+true
+```
diff --git a/core/alter-user-input-properties-grant-assertions-list.md b/core/alter-user-input-properties-grant-assertions-list.md
new file mode 100644
index 000000000..3564a1330
--- /dev/null
+++ b/core/alter-user-input-properties-grant-assertions-list.md
@@ -0,0 +1,19 @@
+# Grant assertions list Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-user-input.json#/properties/grant
+```
+
+A list of initial roles on the matching objects
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [alter-user-input.json\*](cluster/alter-user-input.json "open original schema") |
+
+## grant Type
+
+`object[]` ([Grant object](cluster-definitions-grant-object.md))
+
+## grant Constraints
+
+**unique items**: all items in this array must be unique. Duplicates are not allowed.
diff --git a/core/alter-user-input-properties-revoke-assertions-list.md b/core/alter-user-input-properties-revoke-assertions-list.md
new file mode 100644
index 000000000..c2f841062
--- /dev/null
+++ b/core/alter-user-input-properties-revoke-assertions-list.md
@@ -0,0 +1,19 @@
+# Revoke assertions list Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-user-input.json#/properties/revoke
+```
+
+A list of revoke roles on the matching objects
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [alter-user-input.json\*](cluster/alter-user-input.json "open original schema") |
+
+## revoke Type
+
+`object[]` ([Grant object](cluster-definitions-grant-object.md))
+
+## revoke Constraints
+
+**unique items**: all items in this array must be unique. Duplicates are not allowed.
diff --git a/core/alter-user-input.json b/core/alter-user-input.json
new file mode 100644
index 000000000..e66b3a54c
--- /dev/null
+++ b/core/alter-user-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"alter-user input","$id":"http://schema.nethserver.org/cluster/alter-user-input.json","description":"Alter an user account in the Redis DB for the cluster administration web interface","examples":[{"user":"admin","set":{"display_name":"The Administrator","password":"New Password"},"grant":[],"revoke":[]}],"type":"object","required":["user","set"],"properties":{"user":{"$ref":"http://schema.nethserver.org/cluster.json#/definitions/strict-username-string"},"set":{"$ref":"http://schema.nethserver.org/cluster.json#/definitions/user-attributes"},"grant":{"description":"A list of initial roles on the matching objects","type":"array","title":"Grant assertions list","items":{"$ref":"http://schema.nethserver.org/cluster.json#/definitions/grant-object"},"uniqueItems":true},"revoke":{"description":"A list of revoke roles on the matching objects","type":"array","title":"Revoke assertions list","items":{"$ref":"http://schema.nethserver.org/cluster.json#/definitions/grant-object"},"uniqueItems":true}}}
diff --git a/core/alter-user-input.md b/core/alter-user-input.md
new file mode 100644
index 000000000..00c321b5a
--- /dev/null
+++ b/core/alter-user-input.md
@@ -0,0 +1,163 @@
+# alter-user input Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-user-input.json
+```
+
+Alter an user account in the Redis DB for the cluster administration web interface
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [alter-user-input.json](cluster/alter-user-input.json "open original schema") |
+
+## alter-user input Type
+
+`object` ([alter-user input](alter-user-input.md))
+
+## alter-user input Examples
+
+```json
+{
+ "user": "admin",
+ "set": {
+ "display_name": "The Administrator",
+ "password": "New Password"
+ },
+ "grant": [],
+ "revoke": []
+}
+```
+
+# alter-user input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :---------------- | :------- | :------- | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [user](#user) | `string` | Required | cannot be null | [alter-user input](cluster-definitions-strict-username-format.md "http://schema.nethserver.org/cluster/alter-user-input.json#/properties/user") |
+| [set](#set) | `object` | Required | cannot be null | [alter-user input](cluster-definitions-user-attributes.md "http://schema.nethserver.org/cluster/alter-user-input.json#/properties/set") |
+| [grant](#grant) | `array` | Optional | cannot be null | [alter-user input](alter-user-input-properties-grant-assertions-list.md "http://schema.nethserver.org/cluster/alter-user-input.json#/properties/grant") |
+| [revoke](#revoke) | `array` | Optional | cannot be null | [alter-user input](alter-user-input-properties-revoke-assertions-list.md "http://schema.nethserver.org/cluster/alter-user-input.json#/properties/revoke") |
+
+## user
+
+A username string can be written in many ways. This is a quite strict form. See
+
+`user`
+
+* is required
+
+* Type: `string` ([Strict username format](cluster-definitions-strict-username-format.md))
+
+* cannot be null
+
+* defined in: [alter-user input](cluster-definitions-strict-username-format.md "http://schema.nethserver.org/cluster/alter-user-input.json#/properties/user")
+
+### user Type
+
+`string` ([Strict username format](cluster-definitions-strict-username-format.md))
+
+### user Constraints
+
+**maximum length**: the maximum number of characters for this string is: `32`
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+**pattern**: the string must match the following regular expression:
+
+```regexp
+^[a-z_][a-z0-9_-]*[$]?$
+```
+
+[try pattern](https://regexr.com/?expression=%5E%5Ba-z_%5D%5Ba-z0-9_-%5D*%5B%24%5D%3F%24 "try regular expression with regexr.com")
+
+### user Examples
+
+```json
+"admin"
+```
+
+```json
+"u0000"
+```
+
+```json
+"worker$"
+```
+
+```json
+"test-user"
+```
+
+```json
+"test_user"
+```
+
+## set
+
+Attributes of a User
+
+`set`
+
+* is required
+
+* Type: `object` ([User attributes](cluster-definitions-user-attributes.md))
+
+* cannot be null
+
+* defined in: [alter-user input](cluster-definitions-user-attributes.md "http://schema.nethserver.org/cluster/alter-user-input.json#/properties/set")
+
+### set Type
+
+`object` ([User attributes](cluster-definitions-user-attributes.md))
+
+### set Examples
+
+```json
+{
+ "display_name": "Mighty Admin",
+ "2fa": false
+}
+```
+
+## grant
+
+A list of initial roles on the matching objects
+
+`grant`
+
+* is optional
+
+* Type: `object[]` ([Grant object](cluster-definitions-grant-object.md))
+
+* cannot be null
+
+* defined in: [alter-user input](alter-user-input-properties-grant-assertions-list.md "http://schema.nethserver.org/cluster/alter-user-input.json#/properties/grant")
+
+### grant Type
+
+`object[]` ([Grant object](cluster-definitions-grant-object.md))
+
+### grant Constraints
+
+**unique items**: all items in this array must be unique. Duplicates are not allowed.
+
+## revoke
+
+A list of revoke roles on the matching objects
+
+`revoke`
+
+* is optional
+
+* Type: `object[]` ([Grant object](cluster-definitions-grant-object.md))
+
+* cannot be null
+
+* defined in: [alter-user input](alter-user-input-properties-revoke-assertions-list.md "http://schema.nethserver.org/cluster/alter-user-input.json#/properties/revoke")
+
+### revoke Type
+
+`object[]` ([Grant object](cluster-definitions-grant-object.md))
+
+### revoke Constraints
+
+**unique items**: all items in this array must be unique. Duplicates are not allowed.
diff --git a/core/bind-user-domains-input-properties-domains-items.md b/core/bind-user-domains-input-properties-domains-items.md
new file mode 100644
index 000000000..cca5b6e7c
--- /dev/null
+++ b/core/bind-user-domains-input-properties-domains-items.md
@@ -0,0 +1,19 @@
+# Untitled string in bind-user-domains-input Schema
+
+```txt
+http://schema.nethserver.org/cluster/bind-user-domains-input.json#/properties/domains/items
+```
+
+A user domain name
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [bind-user-domains-input.json\*](cluster/bind-user-domains-input.json "open original schema") |
+
+## items Type
+
+`string`
+
+## items Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/bind-user-domains-input-properties-domains.md b/core/bind-user-domains-input-properties-domains.md
new file mode 100644
index 000000000..909de2a6f
--- /dev/null
+++ b/core/bind-user-domains-input-properties-domains.md
@@ -0,0 +1,15 @@
+# Untitled array in bind-user-domains-input Schema
+
+```txt
+http://schema.nethserver.org/cluster/bind-user-domains-input.json#/properties/domains
+```
+
+One or more domains to bind with the module calling this action
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [bind-user-domains-input.json\*](cluster/bind-user-domains-input.json "open original schema") |
+
+## domains Type
+
+`string[]`
diff --git a/core/bind-user-domains-input.json b/core/bind-user-domains-input.json
new file mode 100644
index 000000000..9b720e35d
--- /dev/null
+++ b/core/bind-user-domains-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"bind-user-domains-input","$id":"http://schema.nethserver.org/cluster/bind-user-domains-input.json","description":"Input schema of the bind-user-domains action","examples":[{"domains":["mydom.test"]}],"type":"object","required":["domains"],"properties":{"domains":{"description":"One or more domains to bind with the module calling this action","type":"array","items":{"description":"A user domain name","type":"string","minLength":1}}}}
diff --git a/core/bind-user-domains-input.md b/core/bind-user-domains-input.md
new file mode 100644
index 000000000..5b5a06ba7
--- /dev/null
+++ b/core/bind-user-domains-input.md
@@ -0,0 +1,49 @@
+# bind-user-domains-input Schema
+
+```txt
+http://schema.nethserver.org/cluster/bind-user-domains-input.json
+```
+
+Input schema of the bind-user-domains action
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [bind-user-domains-input.json](cluster/bind-user-domains-input.json "open original schema") |
+
+## bind-user-domains-input Type
+
+`object` ([bind-user-domains-input](bind-user-domains-input.md))
+
+## bind-user-domains-input Examples
+
+```json
+{
+ "domains": [
+ "mydom.test"
+ ]
+}
+```
+
+# bind-user-domains-input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------ | :------ | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [domains](#domains) | `array` | Required | cannot be null | [bind-user-domains-input](bind-user-domains-input-properties-domains.md "http://schema.nethserver.org/cluster/bind-user-domains-input.json#/properties/domains") |
+
+## domains
+
+One or more domains to bind with the module calling this action
+
+`domains`
+
+* is required
+
+* Type: `string[]`
+
+* cannot be null
+
+* defined in: [bind-user-domains-input](bind-user-domains-input-properties-domains.md "http://schema.nethserver.org/cluster/bind-user-domains-input.json#/properties/domains")
+
+### domains Type
+
+`string[]`
diff --git a/core/change-user-password-input-properties-current_password.md b/core/change-user-password-input-properties-current_password.md
new file mode 100644
index 000000000..cae1fdeae
--- /dev/null
+++ b/core/change-user-password-input-properties-current_password.md
@@ -0,0 +1,15 @@
+# Untitled string in change-user-password-input Schema
+
+```txt
+http://schema.nethserver.org/cluster/change-user-password-input.json#/properties/current_password
+```
+
+Current password in plain text
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [change-user-password-input.json\*](cluster/change-user-password-input.json "open original schema") |
+
+## current\_password Type
+
+`string`
diff --git a/core/change-user-password-input-properties-new_password.md b/core/change-user-password-input-properties-new_password.md
new file mode 100644
index 000000000..f5ccd9169
--- /dev/null
+++ b/core/change-user-password-input-properties-new_password.md
@@ -0,0 +1,15 @@
+# Untitled string in change-user-password-input Schema
+
+```txt
+http://schema.nethserver.org/cluster/change-user-password-input.json#/properties/new_password
+```
+
+New password in plain text. The password will be updated only if the authentication with 'user' and 'current\_password' is valid.
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [change-user-password-input.json\*](cluster/change-user-password-input.json "open original schema") |
+
+## new\_password Type
+
+`string`
diff --git a/core/change-user-password-input-properties-user.md b/core/change-user-password-input-properties-user.md
new file mode 100644
index 000000000..5da93920b
--- /dev/null
+++ b/core/change-user-password-input-properties-user.md
@@ -0,0 +1,15 @@
+# Untitled string in change-user-password-input Schema
+
+```txt
+http://schema.nethserver.org/cluster/change-user-password-input.json#/properties/user
+```
+
+Target user.
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [change-user-password-input.json\*](cluster/change-user-password-input.json "open original schema") |
+
+## user Type
+
+`string`
diff --git a/core/change-user-password-input.json b/core/change-user-password-input.json
new file mode 100644
index 000000000..103876389
--- /dev/null
+++ b/core/change-user-password-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"change-user-password-input","$id":"http://schema.nethserver.org/cluster/change-user-password-input.json","description":"Input schema of the change-user-password action","examples":[{"user":"admin","current_password":"Nethesis,1234","new_password":"Nethesis,12345"}],"type":"object","properties":{"user":{"description":"Target user.","type":"string"},"current_password":{"description":"Current password in plain text","type":"string"},"new_password":{"description":"New password in plain text. The password will be updated only if the authentication with 'user' and 'current_password' is valid.","type":"string"}},"required":["user","current_password","new_password"]}
diff --git a/core/change-user-password-input.md b/core/change-user-password-input.md
new file mode 100644
index 000000000..48b511ba4
--- /dev/null
+++ b/core/change-user-password-input.md
@@ -0,0 +1,87 @@
+# change-user-password-input Schema
+
+```txt
+http://schema.nethserver.org/cluster/change-user-password-input.json
+```
+
+Input schema of the change-user-password action
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [change-user-password-input.json](cluster/change-user-password-input.json "open original schema") |
+
+## change-user-password-input Type
+
+`object` ([change-user-password-input](change-user-password-input.md))
+
+## change-user-password-input Examples
+
+```json
+{
+ "user": "admin",
+ "current_password": "Nethesis,1234",
+ "new_password": "Nethesis,12345"
+}
+```
+
+# change-user-password-input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------------------- | :------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| [user](#user) | `string` | Required | cannot be null | [change-user-password-input](change-user-password-input-properties-user.md "http://schema.nethserver.org/cluster/change-user-password-input.json#/properties/user") |
+| [current\_password](#current_password) | `string` | Required | cannot be null | [change-user-password-input](change-user-password-input-properties-current_password.md "http://schema.nethserver.org/cluster/change-user-password-input.json#/properties/current_password") |
+| [new\_password](#new_password) | `string` | Required | cannot be null | [change-user-password-input](change-user-password-input-properties-new_password.md "http://schema.nethserver.org/cluster/change-user-password-input.json#/properties/new_password") |
+
+## user
+
+Target user.
+
+`user`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [change-user-password-input](change-user-password-input-properties-user.md "http://schema.nethserver.org/cluster/change-user-password-input.json#/properties/user")
+
+### user Type
+
+`string`
+
+## current\_password
+
+Current password in plain text
+
+`current_password`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [change-user-password-input](change-user-password-input-properties-current_password.md "http://schema.nethserver.org/cluster/change-user-password-input.json#/properties/current_password")
+
+### current\_password Type
+
+`string`
+
+## new\_password
+
+New password in plain text. The password will be updated only if the authentication with 'user' and 'current\_password' is valid.
+
+`new_password`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [change-user-password-input](change-user-password-input-properties-new_password.md "http://schema.nethserver.org/cluster/change-user-password-input.json#/properties/new_password")
+
+### new\_password Type
+
+`string`
diff --git a/core/change-user-password-output.json b/core/change-user-password-output.json
new file mode 100644
index 000000000..3574abc44
--- /dev/null
+++ b/core/change-user-password-output.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"change-user-password output","$id":"http://schema.nethserver.org/cluster/change-user-password-output.json","description":"Just an empty object, representing a successful response","examples":[{}],"type":"object","properties":{}}
diff --git a/core/change-user-password-output.md b/core/change-user-password-output.md
new file mode 100644
index 000000000..6d7a23d18
--- /dev/null
+++ b/core/change-user-password-output.md
@@ -0,0 +1,26 @@
+# change-user-password output Schema
+
+```txt
+http://schema.nethserver.org/cluster/change-user-password-output.json
+```
+
+Just an empty object, representing a successful response
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [change-user-password-output.json](cluster/change-user-password-output.json "open original schema") |
+
+## change-user-password output Type
+
+`object` ([change-user-password output](change-user-password-output.md))
+
+## change-user-password output Examples
+
+```json
+{}
+```
+
+# change-user-password output Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------- | :--- | :------- | :------- | :--------- |
diff --git a/core/clone-module-input-1-properties-module-id.md b/core/clone-module-input-1-properties-module-id.md
new file mode 100644
index 000000000..2d79b72b0
--- /dev/null
+++ b/core/clone-module-input-1-properties-module-id.md
@@ -0,0 +1,19 @@
+# Module ID Schema
+
+```txt
+http://schema.nethserver.org/cluster/clone-module-input.json#/properties/module
+```
+
+The identifier of the module to be cloned
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [clone-module-input.json\*](cluster/clone-module-input.json "open original schema") |
+
+## module Type
+
+`string` ([Module ID](clone-module-input-1-properties-module-id.md))
+
+## module Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/clone-module-input-1-properties-node-id.md b/core/clone-module-input-1-properties-node-id.md
new file mode 100644
index 000000000..5704e3d03
--- /dev/null
+++ b/core/clone-module-input-1-properties-node-id.md
@@ -0,0 +1,19 @@
+# Node ID Schema
+
+```txt
+http://schema.nethserver.org/cluster/clone-module-input.json#/properties/node
+```
+
+Node identifier where the clone is created
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [clone-module-input.json\*](cluster/clone-module-input.json "open original schema") |
+
+## node Type
+
+`integer` ([Node ID](clone-module-input-1-properties-node-id.md))
+
+## node Constraints
+
+**minimum**: the value of this number must greater than or equal to: `1`
diff --git a/core/clone-module-input-1-properties-replace-flag.md b/core/clone-module-input-1-properties-replace-flag.md
new file mode 100644
index 000000000..3c6e69b34
--- /dev/null
+++ b/core/clone-module-input-1-properties-replace-flag.md
@@ -0,0 +1,15 @@
+# Replace flag Schema
+
+```txt
+http://schema.nethserver.org/cluster/clone-module-input.json#/properties/replace
+```
+
+If set to true, the clone receives the original UUID and the original module is erased. If false, the clone is just a copy of the original module.
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [clone-module-input.json\*](cluster/clone-module-input.json "open original schema") |
+
+## replace Type
+
+`boolean` ([Replace flag](clone-module-input-1-properties-replace-flag.md))
diff --git a/core/clone-module-input-1.md b/core/clone-module-input-1.md
new file mode 100644
index 000000000..c730241c9
--- /dev/null
+++ b/core/clone-module-input-1.md
@@ -0,0 +1,95 @@
+# clone-module input Schema
+
+```txt
+http://schema.nethserver.org/cluster/clone-module-input.json
+```
+
+Input schema of the clone-module action
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [clone-module-input.json](cluster/clone-module-input.json "open original schema") |
+
+## clone-module input Type
+
+`object` ([clone-module input](clone-module-input-1.md))
+
+## clone-module input Examples
+
+```json
+{
+ "module": "dokuwiki1",
+ "node": 1,
+ "replace": false
+}
+```
+
+# clone-module input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------ | :-------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [module](#module) | `string` | Required | cannot be null | [clone-module input](clone-module-input-1-properties-module-id.md "http://schema.nethserver.org/cluster/clone-module-input.json#/properties/module") |
+| [node](#node) | `integer` | Required | cannot be null | [clone-module input](clone-module-input-1-properties-node-id.md "http://schema.nethserver.org/cluster/clone-module-input.json#/properties/node") |
+| [replace](#replace) | `boolean` | Required | cannot be null | [clone-module input](clone-module-input-1-properties-replace-flag.md "http://schema.nethserver.org/cluster/clone-module-input.json#/properties/replace") |
+
+## module
+
+The identifier of the module to be cloned
+
+`module`
+
+* is required
+
+* Type: `string` ([Module ID](clone-module-input-1-properties-module-id.md))
+
+* cannot be null
+
+* defined in: [clone-module input](clone-module-input-1-properties-module-id.md "http://schema.nethserver.org/cluster/clone-module-input.json#/properties/module")
+
+### module Type
+
+`string` ([Module ID](clone-module-input-1-properties-module-id.md))
+
+### module Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## node
+
+Node identifier where the clone is created
+
+`node`
+
+* is required
+
+* Type: `integer` ([Node ID](clone-module-input-1-properties-node-id.md))
+
+* cannot be null
+
+* defined in: [clone-module input](clone-module-input-1-properties-node-id.md "http://schema.nethserver.org/cluster/clone-module-input.json#/properties/node")
+
+### node Type
+
+`integer` ([Node ID](clone-module-input-1-properties-node-id.md))
+
+### node Constraints
+
+**minimum**: the value of this number must greater than or equal to: `1`
+
+## replace
+
+If set to true, the clone receives the original UUID and the original module is erased. If false, the clone is just a copy of the original module.
+
+`replace`
+
+* is required
+
+* Type: `boolean` ([Replace flag](clone-module-input-1-properties-replace-flag.md))
+
+* cannot be null
+
+* defined in: [clone-module input](clone-module-input-1-properties-replace-flag.md "http://schema.nethserver.org/cluster/clone-module-input.json#/properties/replace")
+
+### replace Type
+
+`boolean` ([Replace flag](clone-module-input-1-properties-replace-flag.md))
diff --git a/core/clone-module-input-properties-initial-volume-set-where-the-module-state-is-stored-name-of-the-volume-element.md b/core/clone-module-input-properties-initial-volume-set-where-the-module-state-is-stored-name-of-the-volume-element.md
new file mode 100644
index 000000000..742938ab0
--- /dev/null
+++ b/core/clone-module-input-properties-initial-volume-set-where-the-module-state-is-stored-name-of-the-volume-element.md
@@ -0,0 +1,15 @@
+# Name of the volume element Schema
+
+```txt
+http://schema.nethserver.org/module/clone-module-input.json#/properties/volumes/items
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [clone-module-input.json\*](module/clone-module-input.json "open original schema") |
+
+## items Type
+
+`string` ([Name of the volume element](clone-module-input-properties-initial-volume-set-where-the-module-state-is-stored-name-of-the-volume-element.md))
diff --git a/core/clone-module-input-properties-initial-volume-set-where-the-module-state-is-stored.md b/core/clone-module-input-properties-initial-volume-set-where-the-module-state-is-stored.md
new file mode 100644
index 000000000..f1458ef62
--- /dev/null
+++ b/core/clone-module-input-properties-initial-volume-set-where-the-module-state-is-stored.md
@@ -0,0 +1,15 @@
+# Initial volume set where the module state is stored Schema
+
+```txt
+http://schema.nethserver.org/module/clone-module-input.json#/properties/volumes
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [clone-module-input.json\*](module/clone-module-input.json "open original schema") |
+
+## volumes Type
+
+`string[]` ([Name of the volume element](clone-module-input-properties-initial-volume-set-where-the-module-state-is-stored-name-of-the-volume-element.md))
diff --git a/core/clone-module-input-properties-replace-flag.md b/core/clone-module-input-properties-replace-flag.md
new file mode 100644
index 000000000..5884c8862
--- /dev/null
+++ b/core/clone-module-input-properties-replace-flag.md
@@ -0,0 +1,15 @@
+# Replace flag Schema
+
+```txt
+http://schema.nethserver.org/module/clone-module-input.json#/properties/replace
+```
+
+If set to true the original module will be erased
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [clone-module-input.json\*](module/clone-module-input.json "open original schema") |
+
+## replace Type
+
+`boolean` ([Replace flag](clone-module-input-properties-replace-flag.md))
diff --git a/core/clone-module-input-properties-rsyncd-service-credentials-items.md b/core/clone-module-input-properties-rsyncd-service-credentials-items.md
new file mode 100644
index 000000000..06165d377
--- /dev/null
+++ b/core/clone-module-input-properties-rsyncd-service-credentials-items.md
@@ -0,0 +1,19 @@
+# Untitled string in clone-module input Schema
+
+```txt
+http://schema.nethserver.org/module/clone-module-input.json#/properties/credentials/items
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [clone-module-input.json\*](module/clone-module-input.json "open original schema") |
+
+## items Type
+
+`string`
+
+## items Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/clone-module-input-properties-rsyncd-service-credentials.md b/core/clone-module-input-properties-rsyncd-service-credentials.md
new file mode 100644
index 000000000..864e0797a
--- /dev/null
+++ b/core/clone-module-input-properties-rsyncd-service-credentials.md
@@ -0,0 +1,21 @@
+# Rsyncd service credentials Schema
+
+```txt
+http://schema.nethserver.org/module/clone-module-input.json#/properties/credentials
+```
+
+An array with two elements: username, password
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [clone-module-input.json\*](module/clone-module-input.json "open original schema") |
+
+## credentials Type
+
+`string[]`
+
+## credentials Constraints
+
+**maximum number of items**: the maximum number of items for this array is: `2`
+
+**minimum number of items**: the minimum number of items for this array is: `2`
diff --git a/core/clone-module-input-properties-rsyncd-tcp-port-number.md b/core/clone-module-input-properties-rsyncd-tcp-port-number.md
new file mode 100644
index 000000000..1064b907e
--- /dev/null
+++ b/core/clone-module-input-properties-rsyncd-tcp-port-number.md
@@ -0,0 +1,19 @@
+# Rsyncd TCP port number Schema
+
+```txt
+http://schema.nethserver.org/module/clone-module-input.json#/properties/port
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [clone-module-input.json\*](module/clone-module-input.json "open original schema") |
+
+## port Type
+
+`integer` ([Rsyncd TCP port number](clone-module-input-properties-rsyncd-tcp-port-number.md))
+
+## port Constraints
+
+**minimum**: the value of this number must greater than or equal to: `1`
diff --git a/core/clone-module-input.json b/core/clone-module-input.json
new file mode 100644
index 000000000..c0ec15ec3
--- /dev/null
+++ b/core/clone-module-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"clone-module input","$id":"http://schema.nethserver.org/cluster/clone-module-input.json","description":"Input schema of the clone-module action","examples":[{"module":"dokuwiki1","node":1,"replace":false}],"type":"object","required":["module","replace","node"],"properties":{"module":{"title":"Module ID","description":"The identifier of the module to be cloned","type":"string","minLength":1},"node":{"title":"Node ID","description":"Node identifier where the clone is created","type":"integer","minimum":1},"replace":{"title":"Replace flag","description":"If set to true, the clone receives the original UUID and the original module is erased. If false, the clone is just a copy of the original module.","type":"boolean"}}}
diff --git a/core/clone-module-input.md b/core/clone-module-input.md
new file mode 100644
index 000000000..e41c0aeb1
--- /dev/null
+++ b/core/clone-module-input.md
@@ -0,0 +1,122 @@
+# clone-module input Schema
+
+```txt
+http://schema.nethserver.org/module/clone-module-input.json
+```
+
+Clone the module state received from rsync
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [clone-module-input.json](module/clone-module-input.json "open original schema") |
+
+## clone-module input Type
+
+`object` ([clone-module input](clone-module-input.md))
+
+## clone-module input Examples
+
+```json
+{
+ "credentials": [
+ "dokuwiki1",
+ "s3cr3t"
+ ],
+ "port": 20027,
+ "volumes": [
+ "dokuwiki-data"
+ ],
+ "replace": false
+}
+```
+
+# clone-module input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :-------------------------- | :-------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [volumes](#volumes) | `array` | Required | cannot be null | [clone-module input](clone-module-input-properties-initial-volume-set-where-the-module-state-is-stored.md "http://schema.nethserver.org/module/clone-module-input.json#/properties/volumes") |
+| [port](#port) | `integer` | Required | cannot be null | [clone-module input](clone-module-input-properties-rsyncd-tcp-port-number.md "http://schema.nethserver.org/module/clone-module-input.json#/properties/port") |
+| [credentials](#credentials) | `array` | Required | cannot be null | [clone-module input](clone-module-input-properties-rsyncd-service-credentials.md "http://schema.nethserver.org/module/clone-module-input.json#/properties/credentials") |
+| [replace](#replace) | `boolean` | Required | cannot be null | [clone-module input](clone-module-input-properties-replace-flag.md "http://schema.nethserver.org/module/clone-module-input.json#/properties/replace") |
+
+## volumes
+
+
+
+`volumes`
+
+* is required
+
+* Type: `string[]` ([Name of the volume element](clone-module-input-properties-initial-volume-set-where-the-module-state-is-stored-name-of-the-volume-element.md))
+
+* cannot be null
+
+* defined in: [clone-module input](clone-module-input-properties-initial-volume-set-where-the-module-state-is-stored.md "http://schema.nethserver.org/module/clone-module-input.json#/properties/volumes")
+
+### volumes Type
+
+`string[]` ([Name of the volume element](clone-module-input-properties-initial-volume-set-where-the-module-state-is-stored-name-of-the-volume-element.md))
+
+## port
+
+
+
+`port`
+
+* is required
+
+* Type: `integer` ([Rsyncd TCP port number](clone-module-input-properties-rsyncd-tcp-port-number.md))
+
+* cannot be null
+
+* defined in: [clone-module input](clone-module-input-properties-rsyncd-tcp-port-number.md "http://schema.nethserver.org/module/clone-module-input.json#/properties/port")
+
+### port Type
+
+`integer` ([Rsyncd TCP port number](clone-module-input-properties-rsyncd-tcp-port-number.md))
+
+### port Constraints
+
+**minimum**: the value of this number must greater than or equal to: `1`
+
+## credentials
+
+An array with two elements: username, password
+
+`credentials`
+
+* is required
+
+* Type: `string[]`
+
+* cannot be null
+
+* defined in: [clone-module input](clone-module-input-properties-rsyncd-service-credentials.md "http://schema.nethserver.org/module/clone-module-input.json#/properties/credentials")
+
+### credentials Type
+
+`string[]`
+
+### credentials Constraints
+
+**maximum number of items**: the maximum number of items for this array is: `2`
+
+**minimum number of items**: the minimum number of items for this array is: `2`
+
+## replace
+
+If set to true the original module will be erased
+
+`replace`
+
+* is required
+
+* Type: `boolean` ([Replace flag](clone-module-input-properties-replace-flag.md))
+
+* cannot be null
+
+* defined in: [clone-module input](clone-module-input-properties-replace-flag.md "http://schema.nethserver.org/module/clone-module-input.json#/properties/replace")
+
+### replace Type
+
+`boolean` ([Replace flag](clone-module-input-properties-replace-flag.md))
diff --git a/core/clone-module-output-properties-image_name.md b/core/clone-module-output-properties-image_name.md
new file mode 100644
index 000000000..38cfb93ae
--- /dev/null
+++ b/core/clone-module-output-properties-image_name.md
@@ -0,0 +1,15 @@
+# Untitled string in clone-module output Schema
+
+```txt
+http://schema.nethserver.org/cluster/clone-module-output.json#/properties/image_name
+```
+
+Display name of the clone image
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [clone-module-output.json\*](cluster/clone-module-output.json "open original schema") |
+
+## image\_name Type
+
+`string`
diff --git a/core/clone-module-output-properties-image_url.md b/core/clone-module-output-properties-image_url.md
new file mode 100644
index 000000000..d3d740b72
--- /dev/null
+++ b/core/clone-module-output-properties-image_url.md
@@ -0,0 +1,15 @@
+# Untitled string in clone-module output Schema
+
+```txt
+http://schema.nethserver.org/cluster/clone-module-output.json#/properties/image_url
+```
+
+Repository URL of the clone image
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [clone-module-output.json\*](cluster/clone-module-output.json "open original schema") |
+
+## image\_url Type
+
+`string`
diff --git a/core/clone-module-output-properties-module_id.md b/core/clone-module-output-properties-module_id.md
new file mode 100644
index 000000000..6b158d13c
--- /dev/null
+++ b/core/clone-module-output-properties-module_id.md
@@ -0,0 +1,15 @@
+# Untitled string in clone-module output Schema
+
+```txt
+http://schema.nethserver.org/cluster/clone-module-output.json#/properties/module_id
+```
+
+Generated identifier of the clone instance
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [clone-module-output.json\*](cluster/clone-module-output.json "open original schema") |
+
+## module\_id Type
+
+`string`
diff --git a/core/clone-module-output.json b/core/clone-module-output.json
new file mode 100644
index 000000000..f1b74cd5f
--- /dev/null
+++ b/core/clone-module-output.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"clone-module output","$id":"http://schema.nethserver.org/cluster/clone-module-output.json","description":"Output schema of the clone-module action. It has the same format of the add-module action output","examples":[{"module_id":"traefik1","image_name":"Traefik edge proxy","image_url":"ghcr.io/nethserver/traefik:latest"}],"type":"object","required":["module_id","image_name","image_url"],"properties":{"module_id":{"description":"Generated identifier of the clone instance","type":"string"},"image_name":{"description":"Display name of the clone image","type":"string"},"image_url":{"description":"Repository URL of the clone image","type":"string"}}}
diff --git a/core/clone-module-output.md b/core/clone-module-output.md
new file mode 100644
index 000000000..4f0ca37e2
--- /dev/null
+++ b/core/clone-module-output.md
@@ -0,0 +1,87 @@
+# clone-module output Schema
+
+```txt
+http://schema.nethserver.org/cluster/clone-module-output.json
+```
+
+Output schema of the clone-module action. It has the same format of the add-module action output
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [clone-module-output.json](cluster/clone-module-output.json "open original schema") |
+
+## clone-module output Type
+
+`object` ([clone-module output](clone-module-output.md))
+
+## clone-module output Examples
+
+```json
+{
+ "module_id": "traefik1",
+ "image_name": "Traefik edge proxy",
+ "image_url": "ghcr.io/nethserver/traefik:latest"
+}
+```
+
+# clone-module output Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------- | :------- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [module\_id](#module_id) | `string` | Required | cannot be null | [clone-module output](clone-module-output-properties-module_id.md "http://schema.nethserver.org/cluster/clone-module-output.json#/properties/module_id") |
+| [image\_name](#image_name) | `string` | Required | cannot be null | [clone-module output](clone-module-output-properties-image_name.md "http://schema.nethserver.org/cluster/clone-module-output.json#/properties/image_name") |
+| [image\_url](#image_url) | `string` | Required | cannot be null | [clone-module output](clone-module-output-properties-image_url.md "http://schema.nethserver.org/cluster/clone-module-output.json#/properties/image_url") |
+
+## module\_id
+
+Generated identifier of the clone instance
+
+`module_id`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [clone-module output](clone-module-output-properties-module_id.md "http://schema.nethserver.org/cluster/clone-module-output.json#/properties/module_id")
+
+### module\_id Type
+
+`string`
+
+## image\_name
+
+Display name of the clone image
+
+`image_name`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [clone-module output](clone-module-output-properties-image_name.md "http://schema.nethserver.org/cluster/clone-module-output.json#/properties/image_name")
+
+### image\_name Type
+
+`string`
+
+## image\_url
+
+Repository URL of the clone image
+
+`image_url`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [clone-module output](clone-module-output-properties-image_url.md "http://schema.nethserver.org/cluster/clone-module-output.json#/properties/image_url")
+
+### image\_url Type
+
+`string`
diff --git a/core/cluster-definitions-grant-assertion-properties-action-name-matcher.md b/core/cluster-definitions-grant-assertion-properties-action-name-matcher.md
new file mode 100644
index 000000000..0a26594bc
--- /dev/null
+++ b/core/cluster-definitions-grant-assertion-properties-action-name-matcher.md
@@ -0,0 +1,37 @@
+# Action name matcher Schema
+
+```txt
+http://schema.nethserver.org/cluster.json#/definitions/grant-assertion/properties/action
+```
+
+Match action names with wildcard `*` character
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [cluster.json\*](cluster.json "open original schema") |
+
+## action Type
+
+`string` ([Action name matcher](cluster-definitions-grant-assertion-properties-action-name-matcher.md))
+
+## action Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## action Examples
+
+```json
+"list-*"
+```
+
+```json
+"show-*"
+```
+
+```json
+"list-users"
+```
+
+```json
+"add-user"
+```
diff --git a/core/cluster-definitions-grant-assertion-properties-on-clause-matcher.md b/core/cluster-definitions-grant-assertion-properties-on-clause-matcher.md
new file mode 100644
index 000000000..fa454c548
--- /dev/null
+++ b/core/cluster-definitions-grant-assertion-properties-on-clause-matcher.md
@@ -0,0 +1,33 @@
+# On clause matcher Schema
+
+```txt
+http://schema.nethserver.org/cluster.json#/definitions/grant-assertion/properties/on
+```
+
+Match the `agent_id`: a prefixed module name, node ID, or `cluster`
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [cluster.json\*](cluster.json "open original schema") |
+
+## on Type
+
+`string` ([On clause matcher](cluster-definitions-grant-assertion-properties-on-clause-matcher.md))
+
+## on Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## on Examples
+
+```json
+"module/dokuwiki*"
+```
+
+```json
+"node/*"
+```
+
+```json
+"cluster"
+```
diff --git a/core/cluster-definitions-grant-assertion-properties-user-name-matcher.md b/core/cluster-definitions-grant-assertion-properties-user-name-matcher.md
new file mode 100644
index 000000000..c966c83ae
--- /dev/null
+++ b/core/cluster-definitions-grant-assertion-properties-user-name-matcher.md
@@ -0,0 +1,41 @@
+# User name matcher Schema
+
+```txt
+http://schema.nethserver.org/cluster.json#/definitions/grant-assertion/properties/to
+```
+
+Match Redis user names with wildcard `*` character
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [cluster.json\*](cluster.json "open original schema") |
+
+## to Type
+
+`string` ([User name matcher](cluster-definitions-grant-assertion-properties-user-name-matcher.md))
+
+## to Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## to Examples
+
+```json
+"admin"
+```
+
+```json
+"cluster"
+```
+
+```json
+"module/*"
+```
+
+```json
+"node/3"
+```
+
+```json
+"*"
+```
diff --git a/core/cluster-definitions-grant-assertion.md b/core/cluster-definitions-grant-assertion.md
new file mode 100644
index 000000000..a50fccb4f
--- /dev/null
+++ b/core/cluster-definitions-grant-assertion.md
@@ -0,0 +1,143 @@
+# Untitled object in grant-actions input Schema
+
+```txt
+http://schema.nethserver.org/cluster/grant-actions-input.json#/items
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [grant-actions-input.json\*](cluster/grant-actions-input.json "open original schema") |
+
+## items Type
+
+`object` ([Details](cluster-definitions-grant-assertion.md))
+
+# items Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :---------------- | :------- | :------- | :------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [action](#action) | `string` | Required | cannot be null | [Cluster library](cluster-definitions-grant-assertion-properties-action-name-matcher.md "http://schema.nethserver.org/cluster.json#/definitions/grant-assertion/properties/action") |
+| [on](#on) | `string` | Required | cannot be null | [Cluster library](cluster-definitions-grant-assertion-properties-on-clause-matcher.md "http://schema.nethserver.org/cluster.json#/definitions/grant-assertion/properties/on") |
+| [to](#to) | `string` | Required | cannot be null | [Cluster library](cluster-definitions-grant-assertion-properties-user-name-matcher.md "http://schema.nethserver.org/cluster.json#/definitions/grant-assertion/properties/to") |
+
+## action
+
+Match action names with wildcard `*` character
+
+`action`
+
+* is required
+
+* Type: `string` ([Action name matcher](cluster-definitions-grant-assertion-properties-action-name-matcher.md))
+
+* cannot be null
+
+* defined in: [Cluster library](cluster-definitions-grant-assertion-properties-action-name-matcher.md "http://schema.nethserver.org/cluster.json#/definitions/grant-assertion/properties/action")
+
+### action Type
+
+`string` ([Action name matcher](cluster-definitions-grant-assertion-properties-action-name-matcher.md))
+
+### action Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+### action Examples
+
+```json
+"list-*"
+```
+
+```json
+"show-*"
+```
+
+```json
+"list-users"
+```
+
+```json
+"add-user"
+```
+
+## on
+
+Match the `agent_id`: a prefixed module name, node ID, or `cluster`
+
+`on`
+
+* is required
+
+* Type: `string` ([On clause matcher](cluster-definitions-grant-assertion-properties-on-clause-matcher.md))
+
+* cannot be null
+
+* defined in: [Cluster library](cluster-definitions-grant-assertion-properties-on-clause-matcher.md "http://schema.nethserver.org/cluster.json#/definitions/grant-assertion/properties/on")
+
+### on Type
+
+`string` ([On clause matcher](cluster-definitions-grant-assertion-properties-on-clause-matcher.md))
+
+### on Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+### on Examples
+
+```json
+"module/dokuwiki*"
+```
+
+```json
+"node/*"
+```
+
+```json
+"cluster"
+```
+
+## to
+
+Match Redis user names with wildcard `*` character
+
+`to`
+
+* is required
+
+* Type: `string` ([User name matcher](cluster-definitions-grant-assertion-properties-user-name-matcher.md))
+
+* cannot be null
+
+* defined in: [Cluster library](cluster-definitions-grant-assertion-properties-user-name-matcher.md "http://schema.nethserver.org/cluster.json#/definitions/grant-assertion/properties/to")
+
+### to Type
+
+`string` ([User name matcher](cluster-definitions-grant-assertion-properties-user-name-matcher.md))
+
+### to Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+### to Examples
+
+```json
+"admin"
+```
+
+```json
+"cluster"
+```
+
+```json
+"module/*"
+```
+
+```json
+"node/3"
+```
+
+```json
+"*"
+```
diff --git a/core/cluster-definitions-grant-object-properties-on.md b/core/cluster-definitions-grant-object-properties-on.md
new file mode 100644
index 000000000..5a75696e8
--- /dev/null
+++ b/core/cluster-definitions-grant-object-properties-on.md
@@ -0,0 +1,19 @@
+# Untitled string in Cluster library Schema
+
+```txt
+http://schema.nethserver.org/cluster.json#/definitions/grant-object/properties/on
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [cluster.json\*](cluster.json "open original schema") |
+
+## on Type
+
+`string`
+
+## on Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/cluster-definitions-grant-object-properties-role.md b/core/cluster-definitions-grant-object-properties-role.md
new file mode 100644
index 000000000..6580ee687
--- /dev/null
+++ b/core/cluster-definitions-grant-object-properties-role.md
@@ -0,0 +1,19 @@
+# Untitled string in Cluster library Schema
+
+```txt
+http://schema.nethserver.org/cluster.json#/definitions/grant-object/properties/role
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [cluster.json\*](cluster.json "open original schema") |
+
+## role Type
+
+`string`
+
+## role Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/cluster-definitions-grant-object.md b/core/cluster-definitions-grant-object.md
new file mode 100644
index 000000000..dda26e1ff
--- /dev/null
+++ b/core/cluster-definitions-grant-object.md
@@ -0,0 +1,75 @@
+# Grant object Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-user-input.json#/properties/revoke/items
+```
+
+A grant object establishes a relation between a role and the cluster objects matching the "on" clause
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [alter-user-input.json\*](cluster/alter-user-input.json "open original schema") |
+
+## items Type
+
+`object` ([Grant object](cluster-definitions-grant-object.md))
+
+## items Examples
+
+```json
+{
+ "role": "owner",
+ "on": "*"
+}
+```
+
+# items Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------ | :------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [role](#role) | `string` | Optional | cannot be null | [Cluster library](cluster-definitions-grant-object-properties-role.md "http://schema.nethserver.org/cluster.json#/definitions/grant-object/properties/role") |
+| [on](#on) | `string` | Optional | cannot be null | [Cluster library](cluster-definitions-grant-object-properties-on.md "http://schema.nethserver.org/cluster.json#/definitions/grant-object/properties/on") |
+
+## role
+
+
+
+`role`
+
+* is optional
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [Cluster library](cluster-definitions-grant-object-properties-role.md "http://schema.nethserver.org/cluster.json#/definitions/grant-object/properties/role")
+
+### role Type
+
+`string`
+
+### role Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## on
+
+
+
+`on`
+
+* is optional
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [Cluster library](cluster-definitions-grant-object-properties-on.md "http://schema.nethserver.org/cluster.json#/definitions/grant-object/properties/on")
+
+### on Type
+
+`string`
+
+### on Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/cluster-definitions-ipv4-cidr.md b/core/cluster-definitions-ipv4-cidr.md
new file mode 100644
index 000000000..3c135e391
--- /dev/null
+++ b/core/cluster-definitions-ipv4-cidr.md
@@ -0,0 +1,35 @@
+# IPv4 CIDR Schema
+
+```txt
+http://schema.nethserver.org/cluster/join-node-input.json#/properties/network
+```
+
+IPv4 with netmask in CIDR notation
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [join-node-input.json\*](cluster/join-node-input.json "open original schema") |
+
+## network Type
+
+`string` ([IPv4 CIDR](cluster-definitions-ipv4-cidr.md))
+
+## network Constraints
+
+**pattern**: the string must match the following regular expression:
+
+```regexp
+^([0-9]{1,3}\.){3}[0-9]{1,3}(\/([0-9]|[1-2][0-9]|3[0-2]))?$
+```
+
+[try pattern](https://regexr.com/?expression=%5E\(%5B0-9%5D%7B1%2C3%7D%5C.\)%7B3%7D%5B0-9%5D%7B1%2C3%7D\(%5C%2F\(%5B0-9%5D%7C%5B1-2%5D%5B0-9%5D%7C3%5B0-2%5D\)\)%3F%24 "try regular expression with regexr.com")
+
+## network Examples
+
+```json
+"10.5.4.0/24"
+```
+
+```json
+"192.168.73.0/24"
+```
diff --git a/core/cluster-definitions-redis-password.md b/core/cluster-definitions-redis-password.md
new file mode 100644
index 000000000..529d12b59
--- /dev/null
+++ b/core/cluster-definitions-redis-password.md
@@ -0,0 +1,35 @@
+# Redis password Schema
+
+```txt
+http://schema.nethserver.org/cluster/add-user-input.json#/properties/password_hash
+```
+
+Redis SHA256 hashed password for Users, Cluster, Nodes and Modules
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [add-user-input.json\*](cluster/add-user-input.json "open original schema") |
+
+## password\_hash Type
+
+`string` ([Redis password](cluster-definitions-redis-password.md))
+
+## password\_hash Constraints
+
+**maximum length**: the maximum number of characters for this string is: `64`
+
+**minimum length**: the minimum number of characters for this string is: `64`
+
+**pattern**: the string must match the following regular expression:
+
+```regexp
+^[a-f0-9]{64}$
+```
+
+[try pattern](https://regexr.com/?expression=%5E%5Ba-f0-9%5D%7B64%7D%24 "try regular expression with regexr.com")
+
+## password\_hash Examples
+
+```json
+"73cb3858a687a8494ca3323053016282f3dad39d42cf62ca4e79dda2aac7d9ac"
+```
diff --git a/core/cluster-definitions-strict-username-format.md b/core/cluster-definitions-strict-username-format.md
new file mode 100644
index 000000000..4b510ab3d
--- /dev/null
+++ b/core/cluster-definitions-strict-username-format.md
@@ -0,0 +1,51 @@
+# Strict username format Schema
+
+```txt
+http://schema.nethserver.org/cluster/remove-user-input.json#/properties/user
+```
+
+A username string can be written in many ways. This is a quite strict form. See
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [remove-user-input.json\*](cluster/remove-user-input.json "open original schema") |
+
+## user Type
+
+`string` ([Strict username format](cluster-definitions-strict-username-format.md))
+
+## user Constraints
+
+**maximum length**: the maximum number of characters for this string is: `32`
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+**pattern**: the string must match the following regular expression:
+
+```regexp
+^[a-z_][a-z0-9_-]*[$]?$
+```
+
+[try pattern](https://regexr.com/?expression=%5E%5Ba-z_%5D%5Ba-z0-9_-%5D*%5B%24%5D%3F%24 "try regular expression with regexr.com")
+
+## user Examples
+
+```json
+"admin"
+```
+
+```json
+"u0000"
+```
+
+```json
+"worker$"
+```
+
+```json
+"test-user"
+```
+
+```json
+"test_user"
+```
diff --git a/core/cluster-definitions-user-attributes-properties-2fa.md b/core/cluster-definitions-user-attributes-properties-2fa.md
new file mode 100644
index 000000000..0a794889c
--- /dev/null
+++ b/core/cluster-definitions-user-attributes-properties-2fa.md
@@ -0,0 +1,15 @@
+# Untitled boolean in Cluster library Schema
+
+```txt
+http://schema.nethserver.org/cluster.json#/definitions/user-attributes/properties/2fa
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [cluster.json\*](cluster.json "open original schema") |
+
+## 2fa Type
+
+`boolean`
diff --git a/core/cluster-definitions-user-attributes-properties-display_name.md b/core/cluster-definitions-user-attributes-properties-display_name.md
new file mode 100644
index 000000000..046134881
--- /dev/null
+++ b/core/cluster-definitions-user-attributes-properties-display_name.md
@@ -0,0 +1,19 @@
+# Untitled string in Cluster library Schema
+
+```txt
+http://schema.nethserver.org/cluster.json#/definitions/user-attributes/properties/display_name
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [cluster.json\*](cluster.json "open original schema") |
+
+## display\_name Type
+
+`string`
+
+## display\_name Constraints
+
+**minimum length**: the minimum number of characters for this string is: `0`
diff --git a/core/cluster-definitions-user-attributes.md b/core/cluster-definitions-user-attributes.md
new file mode 100644
index 000000000..27c62e1cb
--- /dev/null
+++ b/core/cluster-definitions-user-attributes.md
@@ -0,0 +1,71 @@
+# User attributes Schema
+
+```txt
+http://schema.nethserver.org/cluster/alter-user-input.json#/properties/set
+```
+
+Attributes of a User
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [alter-user-input.json\*](cluster/alter-user-input.json "open original schema") |
+
+## set Type
+
+`object` ([User attributes](cluster-definitions-user-attributes.md))
+
+## set Examples
+
+```json
+{
+ "display_name": "Mighty Admin",
+ "2fa": false
+}
+```
+
+# set Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :----------------------------- | :-------- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [display\_name](#display_name) | `string` | Optional | cannot be null | [Cluster library](cluster-definitions-user-attributes-properties-display_name.md "http://schema.nethserver.org/cluster.json#/definitions/user-attributes/properties/display_name") |
+| [2fa](#2fa) | `boolean` | Optional | cannot be null | [Cluster library](cluster-definitions-user-attributes-properties-2fa.md "http://schema.nethserver.org/cluster.json#/definitions/user-attributes/properties/2fa") |
+
+## display\_name
+
+
+
+`display_name`
+
+* is optional
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [Cluster library](cluster-definitions-user-attributes-properties-display_name.md "http://schema.nethserver.org/cluster.json#/definitions/user-attributes/properties/display_name")
+
+### display\_name Type
+
+`string`
+
+### display\_name Constraints
+
+**minimum length**: the minimum number of characters for this string is: `0`
+
+## 2fa
+
+
+
+`2fa`
+
+* is optional
+
+* Type: `boolean`
+
+* cannot be null
+
+* defined in: [Cluster library](cluster-definitions-user-attributes-properties-2fa.md "http://schema.nethserver.org/cluster.json#/definitions/user-attributes/properties/2fa")
+
+### 2fa Type
+
+`boolean`
diff --git a/core/cluster-definitions.md b/core/cluster-definitions.md
new file mode 100644
index 000000000..27741c407
--- /dev/null
+++ b/core/cluster-definitions.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in Cluster library Schema
+
+```txt
+http://schema.nethserver.org/cluster.json#/definitions
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [cluster.json\*](cluster.json "open original schema") |
+
+## definitions Type
+
+unknown
diff --git a/core/cluster.json b/core/cluster.json
new file mode 100644
index 000000000..cfb2f6718
--- /dev/null
+++ b/core/cluster.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","$id":"http://schema.nethserver.org/cluster.json","title":"Cluster library","description":"Cluster actions validation data formats","definitions":{"redis-pwh":{"title":"Redis password","description":"Redis SHA256 hashed password for Users, Cluster, Nodes and Modules","examples":["73cb3858a687a8494ca3323053016282f3dad39d42cf62ca4e79dda2aac7d9ac"],"type":"string","minLength":64,"maxLength":64,"pattern":"^[a-f0-9]{64}$"},"user-attributes":{"title":"User attributes","description":"Attributes of a User","examples":[{"display_name":"Mighty Admin","2fa":false}],"type":"object","properties":{"display_name":{"type":"string","minLength":0},"2fa":{"type":"boolean"}}},"grant-object":{"title":"Grant object","description":"A grant object establishes a relation between a role and the cluster objects matching the \"on\" clause","examples":[{"role":"owner","on":"*"}],"type":"object","properties":{"role":{"type":"string","minLength":1},"on":{"type":"string","minLength":1}}},"strict-username-string":{"title":"Strict username format","description":"A username string can be written in many ways. This is a quite strict form. See https://www.unix.com/man-page/linux/8/useradd/","examples":["admin","u0000","worker$","test-user","test_user"],"type":"string","minLength":1,"maxLength":32,"pattern":"^[a-z_][a-z0-9_-]*[$]?$"},"grant-assertion":{"type":"object","required":["action","to","on"],"properties":{"action":{"title":"Action name matcher","description":"Match action names with wildcard `*` character","examples":["list-*","show-*","list-users","add-user"],"type":"string","minLength":1},"on":{"title":"On clause matcher","description":"Match the `agent_id`: a prefixed module name, node ID, or `cluster`","examples":["module/dokuwiki*","node/*","cluster"],"type":"string","minLength":1},"to":{"title":"User name matcher","examples":["admin","cluster","module/*","node/3","*"],"description":"Match Redis user names with wildcard `*` character","type":"string","minLength":1}}},"ipv4-cidr":{"title":"IPv4 CIDR","description":"IPv4 with netmask in CIDR notation","type":"string","pattern":"^([0-9]{1,3}\\.){3}[0-9]{1,3}(\\/([0-9]|[1-2][0-9]|3[0-2]))?$","examples":["10.5.4.0/24","192.168.73.0/24"]}}}
diff --git a/core/cluster.md b/core/cluster.md
new file mode 100644
index 000000000..aedb8b457
--- /dev/null
+++ b/core/cluster.md
@@ -0,0 +1,294 @@
+# Cluster library Schema
+
+```txt
+http://schema.nethserver.org/cluster.json
+```
+
+Cluster actions validation data formats
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :--------------------- | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------- |
+| Cannot be instantiated | Yes | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [cluster.json](cluster.json "open original schema") |
+
+## Cluster library Type
+
+unknown ([Cluster library](cluster.md))
+
+# Cluster library Definitions
+
+## Definitions group redis-pwh
+
+Reference this group by using
+
+```json
+{"$ref":"http://schema.nethserver.org/cluster.json#/definitions/redis-pwh"}
+```
+
+| Property | Type | Required | Nullable | Defined by |
+| :------- | :--- | :------- | :------- | :--------- |
+
+## Definitions group user-attributes
+
+Reference this group by using
+
+```json
+{"$ref":"http://schema.nethserver.org/cluster.json#/definitions/user-attributes"}
+```
+
+| Property | Type | Required | Nullable | Defined by |
+| :----------------------------- | :-------- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [display\_name](#display_name) | `string` | Optional | cannot be null | [Cluster library](cluster-definitions-user-attributes-properties-display_name.md "http://schema.nethserver.org/cluster.json#/definitions/user-attributes/properties/display_name") |
+| [2fa](#2fa) | `boolean` | Optional | cannot be null | [Cluster library](cluster-definitions-user-attributes-properties-2fa.md "http://schema.nethserver.org/cluster.json#/definitions/user-attributes/properties/2fa") |
+
+### display\_name
+
+
+
+`display_name`
+
+* is optional
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [Cluster library](cluster-definitions-user-attributes-properties-display_name.md "http://schema.nethserver.org/cluster.json#/definitions/user-attributes/properties/display_name")
+
+#### display\_name Type
+
+`string`
+
+#### display\_name Constraints
+
+**minimum length**: the minimum number of characters for this string is: `0`
+
+### 2fa
+
+
+
+`2fa`
+
+* is optional
+
+* Type: `boolean`
+
+* cannot be null
+
+* defined in: [Cluster library](cluster-definitions-user-attributes-properties-2fa.md "http://schema.nethserver.org/cluster.json#/definitions/user-attributes/properties/2fa")
+
+#### 2fa Type
+
+`boolean`
+
+## Definitions group grant-object
+
+Reference this group by using
+
+```json
+{"$ref":"http://schema.nethserver.org/cluster.json#/definitions/grant-object"}
+```
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------ | :------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [role](#role) | `string` | Optional | cannot be null | [Cluster library](cluster-definitions-grant-object-properties-role.md "http://schema.nethserver.org/cluster.json#/definitions/grant-object/properties/role") |
+| [on](#on) | `string` | Optional | cannot be null | [Cluster library](cluster-definitions-grant-object-properties-on.md "http://schema.nethserver.org/cluster.json#/definitions/grant-object/properties/on") |
+
+### role
+
+
+
+`role`
+
+* is optional
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [Cluster library](cluster-definitions-grant-object-properties-role.md "http://schema.nethserver.org/cluster.json#/definitions/grant-object/properties/role")
+
+#### role Type
+
+`string`
+
+#### role Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+### on
+
+
+
+`on`
+
+* is optional
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [Cluster library](cluster-definitions-grant-object-properties-on.md "http://schema.nethserver.org/cluster.json#/definitions/grant-object/properties/on")
+
+#### on Type
+
+`string`
+
+#### on Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## Definitions group strict-username-string
+
+Reference this group by using
+
+```json
+{"$ref":"http://schema.nethserver.org/cluster.json#/definitions/strict-username-string"}
+```
+
+| Property | Type | Required | Nullable | Defined by |
+| :------- | :--- | :------- | :------- | :--------- |
+
+## Definitions group grant-assertion
+
+Reference this group by using
+
+```json
+{"$ref":"http://schema.nethserver.org/cluster.json#/definitions/grant-assertion"}
+```
+
+| Property | Type | Required | Nullable | Defined by |
+| :---------------- | :------- | :------- | :------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [action](#action) | `string` | Required | cannot be null | [Cluster library](cluster-definitions-grant-assertion-properties-action-name-matcher.md "http://schema.nethserver.org/cluster.json#/definitions/grant-assertion/properties/action") |
+| [on](#on-1) | `string` | Required | cannot be null | [Cluster library](cluster-definitions-grant-assertion-properties-on-clause-matcher.md "http://schema.nethserver.org/cluster.json#/definitions/grant-assertion/properties/on") |
+| [to](#to) | `string` | Required | cannot be null | [Cluster library](cluster-definitions-grant-assertion-properties-user-name-matcher.md "http://schema.nethserver.org/cluster.json#/definitions/grant-assertion/properties/to") |
+
+### action
+
+Match action names with wildcard `*` character
+
+`action`
+
+* is required
+
+* Type: `string` ([Action name matcher](cluster-definitions-grant-assertion-properties-action-name-matcher.md))
+
+* cannot be null
+
+* defined in: [Cluster library](cluster-definitions-grant-assertion-properties-action-name-matcher.md "http://schema.nethserver.org/cluster.json#/definitions/grant-assertion/properties/action")
+
+#### action Type
+
+`string` ([Action name matcher](cluster-definitions-grant-assertion-properties-action-name-matcher.md))
+
+#### action Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+#### action Examples
+
+```json
+"list-*"
+```
+
+```json
+"show-*"
+```
+
+```json
+"list-users"
+```
+
+```json
+"add-user"
+```
+
+### on
+
+Match the `agent_id`: a prefixed module name, node ID, or `cluster`
+
+`on`
+
+* is required
+
+* Type: `string` ([On clause matcher](cluster-definitions-grant-assertion-properties-on-clause-matcher.md))
+
+* cannot be null
+
+* defined in: [Cluster library](cluster-definitions-grant-assertion-properties-on-clause-matcher.md "http://schema.nethserver.org/cluster.json#/definitions/grant-assertion/properties/on")
+
+#### on Type
+
+`string` ([On clause matcher](cluster-definitions-grant-assertion-properties-on-clause-matcher.md))
+
+#### on Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+#### on Examples
+
+```json
+"module/dokuwiki*"
+```
+
+```json
+"node/*"
+```
+
+```json
+"cluster"
+```
+
+### to
+
+Match Redis user names with wildcard `*` character
+
+`to`
+
+* is required
+
+* Type: `string` ([User name matcher](cluster-definitions-grant-assertion-properties-user-name-matcher.md))
+
+* cannot be null
+
+* defined in: [Cluster library](cluster-definitions-grant-assertion-properties-user-name-matcher.md "http://schema.nethserver.org/cluster.json#/definitions/grant-assertion/properties/to")
+
+#### to Type
+
+`string` ([User name matcher](cluster-definitions-grant-assertion-properties-user-name-matcher.md))
+
+#### to Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+#### to Examples
+
+```json
+"admin"
+```
+
+```json
+"cluster"
+```
+
+```json
+"module/*"
+```
+
+```json
+"node/3"
+```
+
+```json
+"*"
+```
+
+## Definitions group ipv4-cidr
+
+Reference this group by using
+
+```json
+{"$ref":"http://schema.nethserver.org/cluster.json#/definitions/ipv4-cidr"}
+```
+
+| Property | Type | Required | Nullable | Defined by |
+| :------- | :--- | :------- | :------- | :--------- |
diff --git a/core/configure-backup-input-anyof-add-or-alter-the-backup-configuration-properties-optype.md b/core/configure-backup-input-anyof-add-or-alter-the-backup-configuration-properties-optype.md
new file mode 100644
index 000000000..e1f9aa421
--- /dev/null
+++ b/core/configure-backup-input-anyof-add-or-alter-the-backup-configuration-properties-optype.md
@@ -0,0 +1,24 @@
+# Untitled undefined type in configure-backup input Schema
+
+```txt
+http://schema.nethserver.org/agent/configure-backup-input.json#/anyOf/0/properties/optype
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [configure-backup-input.json\*](agent/configure-backup-input.json "open original schema") |
+
+## optype Type
+
+unknown
+
+## optype Constraints
+
+**enum**: the value of this property must be equal to one of the following values:
+
+| Value | Explanation |
+| :-------- | :---------- |
+| `"add"` | |
+| `"alter"` | |
diff --git a/core/configure-backup-input-anyof-add-or-alter-the-backup-configuration-properties.md b/core/configure-backup-input-anyof-add-or-alter-the-backup-configuration-properties.md
new file mode 100644
index 000000000..6f04acca3
--- /dev/null
+++ b/core/configure-backup-input-anyof-add-or-alter-the-backup-configuration-properties.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in configure-backup input Schema
+
+```txt
+http://schema.nethserver.org/agent/configure-backup-input.json#/anyOf/0/properties
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [configure-backup-input.json\*](agent/configure-backup-input.json "open original schema") |
+
+## properties Type
+
+unknown
diff --git a/core/configure-backup-input-anyof-add-or-alter-the-backup-configuration.md b/core/configure-backup-input-anyof-add-or-alter-the-backup-configuration.md
new file mode 100644
index 000000000..d85af5898
--- /dev/null
+++ b/core/configure-backup-input-anyof-add-or-alter-the-backup-configuration.md
@@ -0,0 +1,48 @@
+# Add or alter the backup configuration Schema
+
+```txt
+http://schema.nethserver.org/agent/configure-backup-input.json#/anyOf/0
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [configure-backup-input.json\*](agent/configure-backup-input.json "open original schema") |
+
+## 0 Type
+
+unknown ([Add or alter the backup configuration](configure-backup-input-anyof-add-or-alter-the-backup-configuration.md))
+
+# 0 Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :---------------- | :------------ | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| [optype](#optype) | Not specified | Required | cannot be null | [configure-backup input](configure-backup-input-anyof-add-or-alter-the-backup-configuration-properties-optype.md "http://schema.nethserver.org/agent/configure-backup-input.json#/anyOf/0/properties/optype") |
+
+## optype
+
+
+
+`optype`
+
+* is required
+
+* Type: unknown
+
+* cannot be null
+
+* defined in: [configure-backup input](configure-backup-input-anyof-add-or-alter-the-backup-configuration-properties-optype.md "http://schema.nethserver.org/agent/configure-backup-input.json#/anyOf/0/properties/optype")
+
+### optype Type
+
+unknown
+
+### optype Constraints
+
+**enum**: the value of this property must be equal to one of the following values:
+
+| Value | Explanation |
+| :-------- | :---------- |
+| `"add"` | |
+| `"alter"` | |
diff --git a/core/configure-backup-input-anyof-remove-the-backup-configuration-properties-optype.md b/core/configure-backup-input-anyof-remove-the-backup-configuration-properties-optype.md
new file mode 100644
index 000000000..ed4d9e83f
--- /dev/null
+++ b/core/configure-backup-input-anyof-remove-the-backup-configuration-properties-optype.md
@@ -0,0 +1,23 @@
+# Untitled undefined type in configure-backup input Schema
+
+```txt
+http://schema.nethserver.org/agent/configure-backup-input.json#/anyOf/1/properties/optype
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [configure-backup-input.json\*](agent/configure-backup-input.json "open original schema") |
+
+## optype Type
+
+unknown
+
+## optype Constraints
+
+**constant**: the value of this property must be equal to:
+
+```json
+"remove"
+```
diff --git a/core/configure-backup-input-anyof-remove-the-backup-configuration-properties.md b/core/configure-backup-input-anyof-remove-the-backup-configuration-properties.md
new file mode 100644
index 000000000..8fb43865e
--- /dev/null
+++ b/core/configure-backup-input-anyof-remove-the-backup-configuration-properties.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in configure-backup input Schema
+
+```txt
+http://schema.nethserver.org/agent/configure-backup-input.json#/anyOf/1/properties
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [configure-backup-input.json\*](agent/configure-backup-input.json "open original schema") |
+
+## properties Type
+
+unknown
diff --git a/core/configure-backup-input-anyof-remove-the-backup-configuration.md b/core/configure-backup-input-anyof-remove-the-backup-configuration.md
new file mode 100644
index 000000000..1ebe70bc7
--- /dev/null
+++ b/core/configure-backup-input-anyof-remove-the-backup-configuration.md
@@ -0,0 +1,47 @@
+# Remove the backup configuration Schema
+
+```txt
+http://schema.nethserver.org/agent/configure-backup-input.json#/anyOf/1
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [configure-backup-input.json\*](agent/configure-backup-input.json "open original schema") |
+
+## 1 Type
+
+unknown ([Remove the backup configuration](configure-backup-input-anyof-remove-the-backup-configuration.md))
+
+# 1 Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :---------------- | :------------ | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| [optype](#optype) | Not specified | Required | cannot be null | [configure-backup input](configure-backup-input-anyof-remove-the-backup-configuration-properties-optype.md "http://schema.nethserver.org/agent/configure-backup-input.json#/anyOf/1/properties/optype") |
+
+## optype
+
+
+
+`optype`
+
+* is required
+
+* Type: unknown
+
+* cannot be null
+
+* defined in: [configure-backup input](configure-backup-input-anyof-remove-the-backup-configuration-properties-optype.md "http://schema.nethserver.org/agent/configure-backup-input.json#/anyOf/1/properties/optype")
+
+### optype Type
+
+unknown
+
+### optype Constraints
+
+**constant**: the value of this property must be equal to:
+
+```json
+"remove"
+```
diff --git a/core/configure-backup-input-properties-backup-id.md b/core/configure-backup-input-properties-backup-id.md
new file mode 100644
index 000000000..0e9df8dcd
--- /dev/null
+++ b/core/configure-backup-input-properties-backup-id.md
@@ -0,0 +1,19 @@
+# Backup ID Schema
+
+```txt
+http://schema.nethserver.org/agent/configure-backup-input.json#/properties/id
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [configure-backup-input.json\*](agent/configure-backup-input.json "open original schema") |
+
+## id Type
+
+`integer` ([Backup ID](configure-backup-input-properties-backup-id.md))
+
+## id Constraints
+
+**minimum**: the value of this number must greater than or equal to: `1`
diff --git a/core/configure-backup-input-properties-backup-name.md b/core/configure-backup-input-properties-backup-name.md
new file mode 100644
index 000000000..e8532b839
--- /dev/null
+++ b/core/configure-backup-input-properties-backup-name.md
@@ -0,0 +1,15 @@
+# Backup name Schema
+
+```txt
+http://schema.nethserver.org/agent/configure-backup-input.json#/properties/name
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [configure-backup-input.json\*](agent/configure-backup-input.json "open original schema") |
+
+## name Type
+
+`string` ([Backup name](configure-backup-input-properties-backup-name.md))
diff --git a/core/configure-backup-input-properties-enabled.md b/core/configure-backup-input-properties-enabled.md
new file mode 100644
index 000000000..e0297eea4
--- /dev/null
+++ b/core/configure-backup-input-properties-enabled.md
@@ -0,0 +1,15 @@
+# Untitled boolean in configure-backup input Schema
+
+```txt
+http://schema.nethserver.org/agent/configure-backup-input.json#/properties/enabled
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [configure-backup-input.json\*](agent/configure-backup-input.json "open original schema") |
+
+## enabled Type
+
+`boolean`
diff --git a/core/configure-backup-input-properties-operation-type.md b/core/configure-backup-input-properties-operation-type.md
new file mode 100644
index 000000000..7f72cd1a4
--- /dev/null
+++ b/core/configure-backup-input-properties-operation-type.md
@@ -0,0 +1,15 @@
+# Operation type Schema
+
+```txt
+http://schema.nethserver.org/agent/configure-backup-input.json#/properties/optype
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [configure-backup-input.json\*](agent/configure-backup-input.json "open original schema") |
+
+## optype Type
+
+`string` ([Operation type](configure-backup-input-properties-operation-type.md))
diff --git a/core/configure-backup-input-properties-schedule.md b/core/configure-backup-input-properties-schedule.md
new file mode 100644
index 000000000..550e7a9eb
--- /dev/null
+++ b/core/configure-backup-input-properties-schedule.md
@@ -0,0 +1,15 @@
+# Untitled string in configure-backup input Schema
+
+```txt
+http://schema.nethserver.org/agent/configure-backup-input.json#/properties/schedule
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [configure-backup-input.json\*](agent/configure-backup-input.json "open original schema") |
+
+## schedule Type
+
+`string`
diff --git a/core/configure-backup-input.json b/core/configure-backup-input.json
new file mode 100644
index 000000000..76f73d0c2
--- /dev/null
+++ b/core/configure-backup-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"configure-backup input","$id":"http://schema.nethserver.org/agent/configure-backup-input.json","description":"Input schema of the basic configure-backup action","examples":[{"optype":"add","id":5,"name":"BB daily","schedule":"daily","enabled":true}],"type":"object","anyOf":[{"title":"Add or alter the backup configuration","required":["optype","id","name","schedule","enabled"],"properties":{"optype":{"enum":["add","alter"]}}},{"title":"Remove the backup configuration","required":["optype","id"],"properties":{"optype":{"const":"remove"}}}],"properties":{"optype":{"type":"string","title":"Operation type"},"id":{"title":"Backup ID","type":"integer","minimum":1},"name":{"title":"Backup name","type":"string"},"schedule":{"type":"string"},"enabled":{"type":"boolean"}}}
diff --git a/core/configure-backup-input.md b/core/configure-backup-input.md
new file mode 100644
index 000000000..3188da306
--- /dev/null
+++ b/core/configure-backup-input.md
@@ -0,0 +1,137 @@
+# configure-backup input Schema
+
+```txt
+http://schema.nethserver.org/agent/configure-backup-input.json
+```
+
+Input schema of the basic configure-backup action
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [configure-backup-input.json](agent/configure-backup-input.json "open original schema") |
+
+## configure-backup input Type
+
+`object` ([configure-backup input](configure-backup-input.md))
+
+any of
+
+* [Add or alter the backup configuration](configure-backup-input-anyof-add-or-alter-the-backup-configuration.md "check type definition")
+
+* [Remove the backup configuration](configure-backup-input-anyof-remove-the-backup-configuration.md "check type definition")
+
+## configure-backup input Examples
+
+```json
+{
+ "optype": "add",
+ "id": 5,
+ "name": "BB daily",
+ "schedule": "daily",
+ "enabled": true
+}
+```
+
+# configure-backup input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :-------------------- | :-------- | :------- | :------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [optype](#optype) | `string` | Optional | cannot be null | [configure-backup input](configure-backup-input-properties-operation-type.md "http://schema.nethserver.org/agent/configure-backup-input.json#/properties/optype") |
+| [id](#id) | `integer` | Optional | cannot be null | [configure-backup input](configure-backup-input-properties-backup-id.md "http://schema.nethserver.org/agent/configure-backup-input.json#/properties/id") |
+| [name](#name) | `string` | Optional | cannot be null | [configure-backup input](configure-backup-input-properties-backup-name.md "http://schema.nethserver.org/agent/configure-backup-input.json#/properties/name") |
+| [schedule](#schedule) | `string` | Optional | cannot be null | [configure-backup input](configure-backup-input-properties-schedule.md "http://schema.nethserver.org/agent/configure-backup-input.json#/properties/schedule") |
+| [enabled](#enabled) | `boolean` | Optional | cannot be null | [configure-backup input](configure-backup-input-properties-enabled.md "http://schema.nethserver.org/agent/configure-backup-input.json#/properties/enabled") |
+
+## optype
+
+
+
+`optype`
+
+* is optional
+
+* Type: `string` ([Operation type](configure-backup-input-properties-operation-type.md))
+
+* cannot be null
+
+* defined in: [configure-backup input](configure-backup-input-properties-operation-type.md "http://schema.nethserver.org/agent/configure-backup-input.json#/properties/optype")
+
+### optype Type
+
+`string` ([Operation type](configure-backup-input-properties-operation-type.md))
+
+## id
+
+
+
+`id`
+
+* is optional
+
+* Type: `integer` ([Backup ID](configure-backup-input-properties-backup-id.md))
+
+* cannot be null
+
+* defined in: [configure-backup input](configure-backup-input-properties-backup-id.md "http://schema.nethserver.org/agent/configure-backup-input.json#/properties/id")
+
+### id Type
+
+`integer` ([Backup ID](configure-backup-input-properties-backup-id.md))
+
+### id Constraints
+
+**minimum**: the value of this number must greater than or equal to: `1`
+
+## name
+
+
+
+`name`
+
+* is optional
+
+* Type: `string` ([Backup name](configure-backup-input-properties-backup-name.md))
+
+* cannot be null
+
+* defined in: [configure-backup input](configure-backup-input-properties-backup-name.md "http://schema.nethserver.org/agent/configure-backup-input.json#/properties/name")
+
+### name Type
+
+`string` ([Backup name](configure-backup-input-properties-backup-name.md))
+
+## schedule
+
+
+
+`schedule`
+
+* is optional
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [configure-backup input](configure-backup-input-properties-schedule.md "http://schema.nethserver.org/agent/configure-backup-input.json#/properties/schedule")
+
+### schedule Type
+
+`string`
+
+## enabled
+
+
+
+`enabled`
+
+* is optional
+
+* Type: `boolean`
+
+* cannot be null
+
+* defined in: [configure-backup input](configure-backup-input-properties-enabled.md "http://schema.nethserver.org/agent/configure-backup-input.json#/properties/enabled")
+
+### enabled Type
+
+`boolean`
diff --git a/core/create-cluster-input-properties-endpoint.md b/core/create-cluster-input-properties-endpoint.md
new file mode 100644
index 000000000..ef54bf205
--- /dev/null
+++ b/core/create-cluster-input-properties-endpoint.md
@@ -0,0 +1,25 @@
+# Untitled string in create-cluster input Schema
+
+```txt
+http://schema.nethserver.org/cluster/create-cluster-input.json#/properties/endpoint
+```
+
+The public WireGuard VPN endpoint in `hostname:port` form. The given port may differ from 55820 as it depends on external configurations (i.e. port-forwards)
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [create-cluster-input.json\*](cluster/create-cluster-input.json "open original schema") |
+
+## endpoint Type
+
+`string`
+
+## endpoint Examples
+
+```json
+"my.example.com:55820"
+```
+
+```json
+"1.2.3.4:60000"
+```
diff --git a/core/create-cluster-input.json b/core/create-cluster-input.json
new file mode 100644
index 000000000..297b4ae49
--- /dev/null
+++ b/core/create-cluster-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"create-cluster input","$id":"http://schema.nethserver.org/cluster/create-cluster-input.json","description":"Provide basic information required by the new cluster initialization procedure","examples":[{"network":"10.5.4.0/24","endpoint":"fc1.dp.nethserver.net:55820"}],"type":"object","required":["network","endpoint"],"properties":{"network":{"title":"VPN network address","description":"The cluster VPN network address in CIDR notation","$ref":"http://schema.nethserver.org/cluster.json#/definitions/ipv4-cidr"},"endpoint":{"description":"The public WireGuard VPN endpoint in `hostname:port` form. The given port may differ from 55820 as it depends on external configurations (i.e. port-forwards)","examples":["my.example.com:55820","1.2.3.4:60000"],"type":"string"}}}
diff --git a/core/create-cluster-input.md b/core/create-cluster-input.md
new file mode 100644
index 000000000..aa6deefca
--- /dev/null
+++ b/core/create-cluster-input.md
@@ -0,0 +1,97 @@
+# create-cluster input Schema
+
+```txt
+http://schema.nethserver.org/cluster/create-cluster-input.json
+```
+
+Provide basic information required by the new cluster initialization procedure
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [create-cluster-input.json](cluster/create-cluster-input.json "open original schema") |
+
+## create-cluster input Type
+
+`object` ([create-cluster input](create-cluster-input.md))
+
+## create-cluster input Examples
+
+```json
+{
+ "network": "10.5.4.0/24",
+ "endpoint": "fc1.dp.nethserver.net:55820"
+}
+```
+
+# create-cluster input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :-------------------- | :------- | :------- | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [network](#network) | `string` | Required | cannot be null | [create-cluster input](cluster-definitions-ipv4-cidr.md "http://schema.nethserver.org/cluster/create-cluster-input.json#/properties/network") |
+| [endpoint](#endpoint) | `string` | Required | cannot be null | [create-cluster input](create-cluster-input-properties-endpoint.md "http://schema.nethserver.org/cluster/create-cluster-input.json#/properties/endpoint") |
+
+## network
+
+IPv4 with netmask in CIDR notation
+
+`network`
+
+* is required
+
+* Type: `string` ([IPv4 CIDR](cluster-definitions-ipv4-cidr.md))
+
+* cannot be null
+
+* defined in: [create-cluster input](cluster-definitions-ipv4-cidr.md "http://schema.nethserver.org/cluster/create-cluster-input.json#/properties/network")
+
+### network Type
+
+`string` ([IPv4 CIDR](cluster-definitions-ipv4-cidr.md))
+
+### network Constraints
+
+**pattern**: the string must match the following regular expression:
+
+```regexp
+^([0-9]{1,3}\.){3}[0-9]{1,3}(\/([0-9]|[1-2][0-9]|3[0-2]))?$
+```
+
+[try pattern](https://regexr.com/?expression=%5E\(%5B0-9%5D%7B1%2C3%7D%5C.\)%7B3%7D%5B0-9%5D%7B1%2C3%7D\(%5C%2F\(%5B0-9%5D%7C%5B1-2%5D%5B0-9%5D%7C3%5B0-2%5D\)\)%3F%24 "try regular expression with regexr.com")
+
+### network Examples
+
+```json
+"10.5.4.0/24"
+```
+
+```json
+"192.168.73.0/24"
+```
+
+## endpoint
+
+The public WireGuard VPN endpoint in `hostname:port` form. The given port may differ from 55820 as it depends on external configurations (i.e. port-forwards)
+
+`endpoint`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [create-cluster input](create-cluster-input-properties-endpoint.md "http://schema.nethserver.org/cluster/create-cluster-input.json#/properties/endpoint")
+
+### endpoint Type
+
+`string`
+
+### endpoint Examples
+
+```json
+"my.example.com:55820"
+```
+
+```json
+"1.2.3.4:60000"
+```
diff --git a/core/create-cluster-output-properties-ip_address.md b/core/create-cluster-output-properties-ip_address.md
new file mode 100644
index 000000000..bb8a0f52f
--- /dev/null
+++ b/core/create-cluster-output-properties-ip_address.md
@@ -0,0 +1,19 @@
+# Untitled string in create-cluster output Schema
+
+```txt
+http://schema.nethserver.org/cluster/create-cluster-output.json#/properties/ip_address
+```
+
+The VPN IP address of the leader node
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [create-cluster-output.json\*](cluster/create-cluster-output.json "open original schema") |
+
+## ip\_address Type
+
+`string`
+
+## ip\_address Constraints
+
+**IPv4**: the string must be an IPv4 address (dotted quad), according to [RFC 2673, section 3.2](https://tools.ietf.org/html/rfc2673 "check the specification")
diff --git a/core/create-cluster-output.json b/core/create-cluster-output.json
new file mode 100644
index 000000000..80b5f7d29
--- /dev/null
+++ b/core/create-cluster-output.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"create-cluster output","$id":"http://schema.nethserver.org/cluster/create-cluster-output.json","description":"Relevant information generated by the `create-cluster` action","examples":[{"ip_address":"10.5.4.1"}],"type":"object","properties":{"ip_address":{"description":"The VPN IP address of the leader node","type":"string","format":"ipv4"}}}
diff --git a/core/create-cluster-output.md b/core/create-cluster-output.md
new file mode 100644
index 000000000..6143287bf
--- /dev/null
+++ b/core/create-cluster-output.md
@@ -0,0 +1,51 @@
+# create-cluster output Schema
+
+```txt
+http://schema.nethserver.org/cluster/create-cluster-output.json
+```
+
+Relevant information generated by the `create-cluster` action
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [create-cluster-output.json](cluster/create-cluster-output.json "open original schema") |
+
+## create-cluster output Type
+
+`object` ([create-cluster output](create-cluster-output.md))
+
+## create-cluster output Examples
+
+```json
+{
+ "ip_address": "10.5.4.1"
+}
+```
+
+# create-cluster output Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------- | :------- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [ip\_address](#ip_address) | `string` | Optional | cannot be null | [create-cluster output](create-cluster-output-properties-ip_address.md "http://schema.nethserver.org/cluster/create-cluster-output.json#/properties/ip_address") |
+
+## ip\_address
+
+The VPN IP address of the leader node
+
+`ip_address`
+
+* is optional
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [create-cluster output](create-cluster-output-properties-ip_address.md "http://schema.nethserver.org/cluster/create-cluster-output.json#/properties/ip_address")
+
+### ip\_address Type
+
+`string`
+
+### ip\_address Constraints
+
+**IPv4**: the string must be an IPv4 address (dotted quad), according to [RFC 2673, section 3.2](https://tools.ietf.org/html/rfc2673 "check the specification")
diff --git a/core/create-input-properties-id.md b/core/create-input-properties-id.md
new file mode 100644
index 000000000..ff419740b
--- /dev/null
+++ b/core/create-input-properties-id.md
@@ -0,0 +1,19 @@
+# Untitled integer in create input Schema
+
+```txt
+http://schema.nethserver.org/example/create-input.json#/properties/id
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [create-input.json\*](example/create-input.json "open original schema") |
+
+## id Type
+
+`integer`
+
+## id Constraints
+
+**minimum**: the value of this number must greater than or equal to: `1`
diff --git a/core/create-input.json b/core/create-input.json
new file mode 100644
index 000000000..7b69d07b4
--- /dev/null
+++ b/core/create-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"create input","$id":"http://schema.nethserver.org/example/create-input.json","type":"object","required":["id"],"properties":{"id":{"type":"integer","minimum":1}}}
diff --git a/core/create-input.md b/core/create-input.md
new file mode 100644
index 000000000..61e806bcd
--- /dev/null
+++ b/core/create-input.md
@@ -0,0 +1,43 @@
+# create input Schema
+
+```txt
+http://schema.nethserver.org/example/create-input.json
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [create-input.json](example/create-input.json "open original schema") |
+
+## create input Type
+
+`object` ([create input](create-input.md))
+
+# create input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :-------- | :-------- | :------- | :------------- | :-------------------------------------------------------------------------------------------------------------------- |
+| [id](#id) | `integer` | Required | cannot be null | [create input](create-input-properties-id.md "http://schema.nethserver.org/example/create-input.json#/properties/id") |
+
+## id
+
+
+
+`id`
+
+* is required
+
+* Type: `integer`
+
+* cannot be null
+
+* defined in: [create input](create-input-properties-id.md "http://schema.nethserver.org/example/create-input.json#/properties/id")
+
+### id Type
+
+`integer`
+
+### id Constraints
+
+**minimum**: the value of this number must greater than or equal to: `1`
diff --git a/core/create-module-input-properties-images-items.md b/core/create-module-input-properties-images-items.md
new file mode 100644
index 000000000..9d8412288
--- /dev/null
+++ b/core/create-module-input-properties-images-items.md
@@ -0,0 +1,15 @@
+# Untitled string in create-module input Schema
+
+```txt
+http://schema.nethserver.org/agent/create-module-input.json#/properties/images/items
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [create-module-input.json\*](agent/create-module-input.json "open original schema") |
+
+## items Type
+
+`string`
diff --git a/core/create-module-input-properties-images.md b/core/create-module-input-properties-images.md
new file mode 100644
index 000000000..6e7fcb508
--- /dev/null
+++ b/core/create-module-input-properties-images.md
@@ -0,0 +1,19 @@
+# Untitled array in create-module input Schema
+
+```txt
+http://schema.nethserver.org/agent/create-module-input.json#/properties/images
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [create-module-input.json\*](agent/create-module-input.json "open original schema") |
+
+## images Type
+
+`string[]`
+
+## images Constraints
+
+**unique items**: all items in this array must be unique. Duplicates are not allowed.
diff --git a/core/create-module-input.json b/core/create-module-input.json
new file mode 100644
index 000000000..8ea6286b5
--- /dev/null
+++ b/core/create-module-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"create-module input","$id":"http://schema.nethserver.org/agent/create-module-input.json","description":"Input schema of the basic create-module action","examples":[{"images":["docker.io/traefik:v2.4"]}],"type":"object","properties":{"images":{"type":"array","items":{"type":"string"},"uniqueItems":true}}}
diff --git a/core/create-module-input.md b/core/create-module-input.md
new file mode 100644
index 000000000..69df03992
--- /dev/null
+++ b/core/create-module-input.md
@@ -0,0 +1,53 @@
+# create-module input Schema
+
+```txt
+http://schema.nethserver.org/agent/create-module-input.json
+```
+
+Input schema of the basic create-module action
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [create-module-input.json](agent/create-module-input.json "open original schema") |
+
+## create-module input Type
+
+`object` ([create-module input](create-module-input.md))
+
+## create-module input Examples
+
+```json
+{
+ "images": [
+ "docker.io/traefik:v2.4"
+ ]
+}
+```
+
+# create-module input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :---------------- | :------ | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------- |
+| [images](#images) | `array` | Optional | cannot be null | [create-module input](create-module-input-properties-images.md "http://schema.nethserver.org/agent/create-module-input.json#/properties/images") |
+
+## images
+
+
+
+`images`
+
+* is optional
+
+* Type: `string[]`
+
+* cannot be null
+
+* defined in: [create-module input](create-module-input-properties-images.md "http://schema.nethserver.org/agent/create-module-input.json#/properties/images")
+
+### images Type
+
+`string[]`
+
+### images Constraints
+
+**unique items**: all items in this array must be unique. Duplicates are not allowed.
diff --git a/core/download-cluster-backup-input-properties-password.md b/core/download-cluster-backup-input-properties-password.md
new file mode 100644
index 000000000..9ff7d6a48
--- /dev/null
+++ b/core/download-cluster-backup-input-properties-password.md
@@ -0,0 +1,19 @@
+# Untitled string in download-cluster-backup-input Schema
+
+```txt
+http://schema.nethserver.org/cluster/download-cluster-backup-input.json#/properties/password
+```
+
+Encryption password in plain text
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [download-cluster-backup-input.json\*](cluster/download-cluster-backup-input.json "open original schema") |
+
+## password Type
+
+`string`
+
+## password Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/download-cluster-backup-input.json b/core/download-cluster-backup-input.json
new file mode 100644
index 000000000..45fcd172d
--- /dev/null
+++ b/core/download-cluster-backup-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"download-cluster-backup-input","$id":"http://schema.nethserver.org/cluster/download-cluster-backup-input.json","description":"Input schema of the download-cluster-backup-input action","examples":[{"password":"Nethesis,12345"}],"type":"object","properties":{"password":{"description":"Encryption password in plain text","type":"string","minLength":1}}}
diff --git a/core/download-cluster-backup-input.md b/core/download-cluster-backup-input.md
new file mode 100644
index 000000000..9fbd3d243
--- /dev/null
+++ b/core/download-cluster-backup-input.md
@@ -0,0 +1,51 @@
+# download-cluster-backup-input Schema
+
+```txt
+http://schema.nethserver.org/cluster/download-cluster-backup-input.json
+```
+
+Input schema of the download-cluster-backup-input action
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [download-cluster-backup-input.json](cluster/download-cluster-backup-input.json "open original schema") |
+
+## download-cluster-backup-input Type
+
+`object` ([download-cluster-backup-input](download-cluster-backup-input.md))
+
+## download-cluster-backup-input Examples
+
+```json
+{
+ "password": "Nethesis,12345"
+}
+```
+
+# download-cluster-backup-input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :-------------------- | :------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [password](#password) | `string` | Optional | cannot be null | [download-cluster-backup-input](download-cluster-backup-input-properties-password.md "http://schema.nethserver.org/cluster/download-cluster-backup-input.json#/properties/password") |
+
+## password
+
+Encryption password in plain text
+
+`password`
+
+* is optional
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [download-cluster-backup-input](download-cluster-backup-input-properties-password.md "http://schema.nethserver.org/cluster/download-cluster-backup-input.json#/properties/password")
+
+### password Type
+
+`string`
+
+### password Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/download-cluster-backup-output-examples-0.md b/core/download-cluster-backup-output-examples-0.md
new file mode 100644
index 000000000..8427ef9f9
--- /dev/null
+++ b/core/download-cluster-backup-output-examples-0.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in download-cluster-backup output Schema
+
+```txt
+http://schema.nethserver.org/cluster/download-cluster-backup-output.json#/examples/0
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [download-cluster-backup-output.json\*](cluster/download-cluster-backup-output.json "open original schema") |
+
+## 0 Type
+
+unknown
diff --git a/core/download-cluster-backup-output.json b/core/download-cluster-backup-output.json
new file mode 100644
index 000000000..98a42c7cf
--- /dev/null
+++ b/core/download-cluster-backup-output.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"download-cluster-backup output","$id":"http://schema.nethserver.org/cluster/download-cluster-backup-output.json","description":"Generate an URL to download an encrypted file containing the cluster backup","examples":[{"path":"ad40cfe5342d731cc4423daefc535e9489666a39264cf8659bc8a4a0e6c4f32e/dump.json.gz.gpg"}]}
diff --git a/core/download-cluster-backup-output.md b/core/download-cluster-backup-output.md
new file mode 100644
index 000000000..9f140e63d
--- /dev/null
+++ b/core/download-cluster-backup-output.md
@@ -0,0 +1,23 @@
+# download-cluster-backup output Schema
+
+```txt
+http://schema.nethserver.org/cluster/download-cluster-backup-output.json
+```
+
+Generate an URL to download an encrypted file containing the cluster backup
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [download-cluster-backup-output.json](cluster/download-cluster-backup-output.json "open original schema") |
+
+## download-cluster-backup output Type
+
+unknown ([download-cluster-backup output](download-cluster-backup-output.md))
+
+## download-cluster-backup output Examples
+
+```json
+{
+ "path": "ad40cfe5342d731cc4423daefc535e9489666a39264cf8659bc8a4a0e6c4f32e/dump.json.gz.gpg"
+}
+```
diff --git a/core/get-cluster-status-output-properties-default_password.md b/core/get-cluster-status-output-properties-default_password.md
new file mode 100644
index 000000000..ab111520a
--- /dev/null
+++ b/core/get-cluster-status-output-properties-default_password.md
@@ -0,0 +1,15 @@
+# Untitled boolean in get-cluster-status output Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/default_password
+```
+
+Set to true if the admin user has still the default passwsord, false otherwise
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-cluster-status-output.json\*](cluster/get-cluster-status-output.json "open original schema") |
+
+## default\_password Type
+
+`boolean`
diff --git a/core/get-cluster-status-output-properties-display-name.md b/core/get-cluster-status-output-properties-display-name.md
new file mode 100644
index 000000000..98792444d
--- /dev/null
+++ b/core/get-cluster-status-output-properties-display-name.md
@@ -0,0 +1,15 @@
+# Display name Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/ui_name
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-cluster-status-output.json\*](cluster/get-cluster-status-output.json "open original schema") |
+
+## ui\_name Type
+
+`string` ([Display name](get-cluster-status-output-properties-display-name.md))
diff --git a/core/get-cluster-status-output-properties-initialized.md b/core/get-cluster-status-output-properties-initialized.md
new file mode 100644
index 000000000..d3b15b925
--- /dev/null
+++ b/core/get-cluster-status-output-properties-initialized.md
@@ -0,0 +1,15 @@
+# Untitled boolean in get-cluster-status output Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/initialized
+```
+
+Set to true if the node has been configured, false otherwise
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-cluster-status-output.json\*](cluster/get-cluster-status-output.json "open original schema") |
+
+## initialized Type
+
+`boolean`
diff --git a/core/get-cluster-status-output-properties-leader.md b/core/get-cluster-status-output-properties-leader.md
new file mode 100644
index 000000000..040b9be6c
--- /dev/null
+++ b/core/get-cluster-status-output-properties-leader.md
@@ -0,0 +1,15 @@
+# Untitled boolean in get-cluster-status output Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/leader
+```
+
+Set to true if the running node is the leader, false otherwise
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-cluster-status-output.json\*](cluster/get-cluster-status-output.json "open original schema") |
+
+## leader Type
+
+`boolean`
diff --git a/core/get-cluster-status-output-properties-leader_url.md b/core/get-cluster-status-output-properties-leader_url.md
new file mode 100644
index 000000000..4d88a7900
--- /dev/null
+++ b/core/get-cluster-status-output-properties-leader_url.md
@@ -0,0 +1,15 @@
+# Untitled string in get-cluster-status output Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/leader_url
+```
+
+UI URL of leader node
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-cluster-status-output.json\*](cluster/get-cluster-status-output.json "open original schema") |
+
+## leader\_url Type
+
+`string`
diff --git a/core/get-cluster-status-output-properties-nodes-items-properties-display-name.md b/core/get-cluster-status-output-properties-nodes-items-properties-display-name.md
new file mode 100644
index 000000000..e7654df02
--- /dev/null
+++ b/core/get-cluster-status-output-properties-nodes-items-properties-display-name.md
@@ -0,0 +1,15 @@
+# Display name Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/nodes/items/properties/ui_name
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-cluster-status-output.json\*](cluster/get-cluster-status-output.json "open original schema") |
+
+## ui\_name Type
+
+`string` ([Display name](get-cluster-status-output-properties-nodes-items-properties-display-name.md))
diff --git a/core/get-cluster-status-output-properties-nodes-items-properties-id.md b/core/get-cluster-status-output-properties-nodes-items-properties-id.md
new file mode 100644
index 000000000..4a776f5da
--- /dev/null
+++ b/core/get-cluster-status-output-properties-nodes-items-properties-id.md
@@ -0,0 +1,15 @@
+# Untitled integer in get-cluster-status output Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/nodes/items/properties/id
+```
+
+Node ID
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-cluster-status-output.json\*](cluster/get-cluster-status-output.json "open original schema") |
+
+## id Type
+
+`integer`
diff --git a/core/get-cluster-status-output-properties-nodes-items-properties-local.md b/core/get-cluster-status-output-properties-nodes-items-properties-local.md
new file mode 100644
index 000000000..c248787cb
--- /dev/null
+++ b/core/get-cluster-status-output-properties-nodes-items-properties-local.md
@@ -0,0 +1,15 @@
+# Untitled boolean in get-cluster-status output Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/nodes/items/properties/local
+```
+
+Set to true if the action is running on the listed node.
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-cluster-status-output.json\*](cluster/get-cluster-status-output.json "open original schema") |
+
+## local Type
+
+`boolean`
diff --git a/core/get-cluster-status-output-properties-nodes-items-properties-machine-fully-qualified-hostname.md b/core/get-cluster-status-output-properties-nodes-items-properties-machine-fully-qualified-hostname.md
new file mode 100644
index 000000000..93d8b823b
--- /dev/null
+++ b/core/get-cluster-status-output-properties-nodes-items-properties-machine-fully-qualified-hostname.md
@@ -0,0 +1,15 @@
+# Machine fully qualified hostname Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/nodes/items/properties/hostname
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-cluster-status-output.json\*](cluster/get-cluster-status-output.json "open original schema") |
+
+## hostname Type
+
+`string` ([Machine fully qualified hostname](get-cluster-status-output-properties-nodes-items-properties-machine-fully-qualified-hostname.md))
diff --git a/core/get-cluster-status-output-properties-nodes-items-properties-machine-id-from-etcmachineid.md b/core/get-cluster-status-output-properties-nodes-items-properties-machine-id-from-etcmachineid.md
new file mode 100644
index 000000000..ca5fc2e66
--- /dev/null
+++ b/core/get-cluster-status-output-properties-nodes-items-properties-machine-id-from-etcmachineid.md
@@ -0,0 +1,15 @@
+# Machine id from /etc/machine.id Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/nodes/items/properties/machine_id
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-cluster-status-output.json\*](cluster/get-cluster-status-output.json "open original schema") |
+
+## machine\_id Type
+
+`string` ([Machine id from /etc/machine.id](get-cluster-status-output-properties-nodes-items-properties-machine-id-from-etcmachineid.md))
diff --git a/core/get-cluster-status-output-properties-nodes-items-properties-vpn-properties-endpoint.md b/core/get-cluster-status-output-properties-nodes-items-properties-vpn-properties-endpoint.md
new file mode 100644
index 000000000..e41b49458
--- /dev/null
+++ b/core/get-cluster-status-output-properties-nodes-items-properties-vpn-properties-endpoint.md
@@ -0,0 +1,15 @@
+# Untitled string in get-cluster-status output Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/nodes/items/properties/vpn/properties/endpoint
+```
+
+WireGuard VPN endpoint
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-cluster-status-output.json\*](cluster/get-cluster-status-output.json "open original schema") |
+
+## endpoint Type
+
+`string`
diff --git a/core/get-cluster-status-output-properties-nodes-items-properties-vpn-properties-ip_address.md b/core/get-cluster-status-output-properties-nodes-items-properties-vpn-properties-ip_address.md
new file mode 100644
index 000000000..1131e4530
--- /dev/null
+++ b/core/get-cluster-status-output-properties-nodes-items-properties-vpn-properties-ip_address.md
@@ -0,0 +1,15 @@
+# Untitled string in get-cluster-status output Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/nodes/items/properties/vpn/properties/ip_address
+```
+
+VPN node IP
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-cluster-status-output.json\*](cluster/get-cluster-status-output.json "open original schema") |
+
+## ip\_address Type
+
+`string`
diff --git a/core/get-cluster-status-output-properties-nodes-items-properties-vpn-properties-keepalive.md b/core/get-cluster-status-output-properties-nodes-items-properties-vpn-properties-keepalive.md
new file mode 100644
index 000000000..5c822bca5
--- /dev/null
+++ b/core/get-cluster-status-output-properties-nodes-items-properties-vpn-properties-keepalive.md
@@ -0,0 +1,15 @@
+# Untitled integer in get-cluster-status output Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/nodes/items/properties/vpn/properties/keepalive
+```
+
+Seconds of persistent keepalive
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-cluster-status-output.json\*](cluster/get-cluster-status-output.json "open original schema") |
+
+## keepalive Type
+
+`integer`
diff --git a/core/get-cluster-status-output-properties-nodes-items-properties-vpn-properties-lastseen.md b/core/get-cluster-status-output-properties-nodes-items-properties-vpn-properties-lastseen.md
new file mode 100644
index 000000000..0f1fe9e6f
--- /dev/null
+++ b/core/get-cluster-status-output-properties-nodes-items-properties-vpn-properties-lastseen.md
@@ -0,0 +1,15 @@
+# Untitled integer in get-cluster-status output Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/nodes/items/properties/vpn/properties/lastseen
+```
+
+Timestamp of last peer hanshake
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-cluster-status-output.json\*](cluster/get-cluster-status-output.json "open original schema") |
+
+## lastseen Type
+
+`integer`
diff --git a/core/get-cluster-status-output-properties-nodes-items-properties-vpn-properties-public_key.md b/core/get-cluster-status-output-properties-nodes-items-properties-vpn-properties-public_key.md
new file mode 100644
index 000000000..54543a6cc
--- /dev/null
+++ b/core/get-cluster-status-output-properties-nodes-items-properties-vpn-properties-public_key.md
@@ -0,0 +1,15 @@
+# Untitled string in get-cluster-status output Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/nodes/items/properties/vpn/properties/public_key
+```
+
+WireGuard VPN publick key
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-cluster-status-output.json\*](cluster/get-cluster-status-output.json "open original schema") |
+
+## public\_key Type
+
+`string`
diff --git a/core/get-cluster-status-output-properties-nodes-items-properties-vpn-properties-rcvd.md b/core/get-cluster-status-output-properties-nodes-items-properties-vpn-properties-rcvd.md
new file mode 100644
index 000000000..abe55f3b1
--- /dev/null
+++ b/core/get-cluster-status-output-properties-nodes-items-properties-vpn-properties-rcvd.md
@@ -0,0 +1,15 @@
+# Untitled integer in get-cluster-status output Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/nodes/items/properties/vpn/properties/rcvd
+```
+
+Bytes received from the peer
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-cluster-status-output.json\*](cluster/get-cluster-status-output.json "open original schema") |
+
+## rcvd Type
+
+`integer`
diff --git a/core/get-cluster-status-output-properties-nodes-items-properties-vpn-properties-sent.md b/core/get-cluster-status-output-properties-nodes-items-properties-vpn-properties-sent.md
new file mode 100644
index 000000000..0e9c5a6bd
--- /dev/null
+++ b/core/get-cluster-status-output-properties-nodes-items-properties-vpn-properties-sent.md
@@ -0,0 +1,15 @@
+# Untitled integer in get-cluster-status output Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/nodes/items/properties/vpn/properties/sent
+```
+
+Bytes sent to the peer
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-cluster-status-output.json\*](cluster/get-cluster-status-output.json "open original schema") |
+
+## sent Type
+
+`integer`
diff --git a/core/get-cluster-status-output-properties-nodes-items-properties-vpn.md b/core/get-cluster-status-output-properties-nodes-items-properties-vpn.md
new file mode 100644
index 000000000..e0961d91c
--- /dev/null
+++ b/core/get-cluster-status-output-properties-nodes-items-properties-vpn.md
@@ -0,0 +1,153 @@
+# Untitled object in get-cluster-status output Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/nodes/items/properties/vpn
+```
+
+WireGuard VPN details
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [get-cluster-status-output.json\*](cluster/get-cluster-status-output.json "open original schema") |
+
+## vpn Type
+
+`object` ([Details](get-cluster-status-output-properties-nodes-items-properties-vpn.md))
+
+# vpn Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------- | :-------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [ip\_address](#ip_address) | `string` | Required | cannot be null | [get-cluster-status output](get-cluster-status-output-properties-nodes-items-properties-vpn-properties-ip_address.md "http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/nodes/items/properties/vpn/properties/ip_address") |
+| [public\_key](#public_key) | `string` | Required | cannot be null | [get-cluster-status output](get-cluster-status-output-properties-nodes-items-properties-vpn-properties-public_key.md "http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/nodes/items/properties/vpn/properties/public_key") |
+| [endpoint](#endpoint) | `string` | Optional | cannot be null | [get-cluster-status output](get-cluster-status-output-properties-nodes-items-properties-vpn-properties-endpoint.md "http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/nodes/items/properties/vpn/properties/endpoint") |
+| [lastseen](#lastseen) | `integer` | Optional | cannot be null | [get-cluster-status output](get-cluster-status-output-properties-nodes-items-properties-vpn-properties-lastseen.md "http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/nodes/items/properties/vpn/properties/lastseen") |
+| [sent](#sent) | `integer` | Optional | cannot be null | [get-cluster-status output](get-cluster-status-output-properties-nodes-items-properties-vpn-properties-sent.md "http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/nodes/items/properties/vpn/properties/sent") |
+| [rcvd](#rcvd) | `integer` | Optional | cannot be null | [get-cluster-status output](get-cluster-status-output-properties-nodes-items-properties-vpn-properties-rcvd.md "http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/nodes/items/properties/vpn/properties/rcvd") |
+| [keepalive](#keepalive) | `integer` | Optional | cannot be null | [get-cluster-status output](get-cluster-status-output-properties-nodes-items-properties-vpn-properties-keepalive.md "http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/nodes/items/properties/vpn/properties/keepalive") |
+
+## ip\_address
+
+VPN node IP
+
+`ip_address`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [get-cluster-status output](get-cluster-status-output-properties-nodes-items-properties-vpn-properties-ip_address.md "http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/nodes/items/properties/vpn/properties/ip_address")
+
+### ip\_address Type
+
+`string`
+
+## public\_key
+
+WireGuard VPN publick key
+
+`public_key`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [get-cluster-status output](get-cluster-status-output-properties-nodes-items-properties-vpn-properties-public_key.md "http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/nodes/items/properties/vpn/properties/public_key")
+
+### public\_key Type
+
+`string`
+
+## endpoint
+
+WireGuard VPN endpoint
+
+`endpoint`
+
+* is optional
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [get-cluster-status output](get-cluster-status-output-properties-nodes-items-properties-vpn-properties-endpoint.md "http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/nodes/items/properties/vpn/properties/endpoint")
+
+### endpoint Type
+
+`string`
+
+## lastseen
+
+Timestamp of last peer hanshake
+
+`lastseen`
+
+* is optional
+
+* Type: `integer`
+
+* cannot be null
+
+* defined in: [get-cluster-status output](get-cluster-status-output-properties-nodes-items-properties-vpn-properties-lastseen.md "http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/nodes/items/properties/vpn/properties/lastseen")
+
+### lastseen Type
+
+`integer`
+
+## sent
+
+Bytes sent to the peer
+
+`sent`
+
+* is optional
+
+* Type: `integer`
+
+* cannot be null
+
+* defined in: [get-cluster-status output](get-cluster-status-output-properties-nodes-items-properties-vpn-properties-sent.md "http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/nodes/items/properties/vpn/properties/sent")
+
+### sent Type
+
+`integer`
+
+## rcvd
+
+Bytes received from the peer
+
+`rcvd`
+
+* is optional
+
+* Type: `integer`
+
+* cannot be null
+
+* defined in: [get-cluster-status output](get-cluster-status-output-properties-nodes-items-properties-vpn-properties-rcvd.md "http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/nodes/items/properties/vpn/properties/rcvd")
+
+### rcvd Type
+
+`integer`
+
+## keepalive
+
+Seconds of persistent keepalive
+
+`keepalive`
+
+* is optional
+
+* Type: `integer`
+
+* cannot be null
+
+* defined in: [get-cluster-status output](get-cluster-status-output-properties-nodes-items-properties-vpn-properties-keepalive.md "http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/nodes/items/properties/vpn/properties/keepalive")
+
+### keepalive Type
+
+`integer`
diff --git a/core/get-cluster-status-output-properties-nodes-items.md b/core/get-cluster-status-output-properties-nodes-items.md
new file mode 100644
index 000000000..19ab2bf16
--- /dev/null
+++ b/core/get-cluster-status-output-properties-nodes-items.md
@@ -0,0 +1,134 @@
+# Untitled object in get-cluster-status output Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/nodes/items
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [get-cluster-status-output.json\*](cluster/get-cluster-status-output.json "open original schema") |
+
+## items Type
+
+`object` ([Details](get-cluster-status-output-properties-nodes-items.md))
+
+# items Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------- | :-------- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [id](#id) | `integer` | Required | cannot be null | [get-cluster-status output](get-cluster-status-output-properties-nodes-items-properties-id.md "http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/nodes/items/properties/id") |
+| [ui\_name](#ui_name) | `string` | Required | cannot be null | [get-cluster-status output](get-cluster-status-output-properties-nodes-items-properties-display-name.md "http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/nodes/items/properties/ui_name") |
+| [local](#local) | `boolean` | Required | cannot be null | [get-cluster-status output](get-cluster-status-output-properties-nodes-items-properties-local.md "http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/nodes/items/properties/local") |
+| [hostname](#hostname) | `string` | Optional | cannot be null | [get-cluster-status output](get-cluster-status-output-properties-nodes-items-properties-machine-fully-qualified-hostname.md "http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/nodes/items/properties/hostname") |
+| [machine\_id](#machine_id) | `string` | Optional | cannot be null | [get-cluster-status output](get-cluster-status-output-properties-nodes-items-properties-machine-id-from-etcmachineid.md "http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/nodes/items/properties/machine_id") |
+| [vpn](#vpn) | `object` | Required | cannot be null | [get-cluster-status output](get-cluster-status-output-properties-nodes-items-properties-vpn.md "http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/nodes/items/properties/vpn") |
+
+## id
+
+Node ID
+
+`id`
+
+* is required
+
+* Type: `integer`
+
+* cannot be null
+
+* defined in: [get-cluster-status output](get-cluster-status-output-properties-nodes-items-properties-id.md "http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/nodes/items/properties/id")
+
+### id Type
+
+`integer`
+
+## ui\_name
+
+
+
+`ui_name`
+
+* is required
+
+* Type: `string` ([Display name](get-cluster-status-output-properties-nodes-items-properties-display-name.md))
+
+* cannot be null
+
+* defined in: [get-cluster-status output](get-cluster-status-output-properties-nodes-items-properties-display-name.md "http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/nodes/items/properties/ui_name")
+
+### ui\_name Type
+
+`string` ([Display name](get-cluster-status-output-properties-nodes-items-properties-display-name.md))
+
+## local
+
+Set to true if the action is running on the listed node.
+
+`local`
+
+* is required
+
+* Type: `boolean`
+
+* cannot be null
+
+* defined in: [get-cluster-status output](get-cluster-status-output-properties-nodes-items-properties-local.md "http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/nodes/items/properties/local")
+
+### local Type
+
+`boolean`
+
+## hostname
+
+
+
+`hostname`
+
+* is optional
+
+* Type: `string` ([Machine fully qualified hostname](get-cluster-status-output-properties-nodes-items-properties-machine-fully-qualified-hostname.md))
+
+* cannot be null
+
+* defined in: [get-cluster-status output](get-cluster-status-output-properties-nodes-items-properties-machine-fully-qualified-hostname.md "http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/nodes/items/properties/hostname")
+
+### hostname Type
+
+`string` ([Machine fully qualified hostname](get-cluster-status-output-properties-nodes-items-properties-machine-fully-qualified-hostname.md))
+
+## machine\_id
+
+
+
+`machine_id`
+
+* is optional
+
+* Type: `string` ([Machine id from /etc/machine.id](get-cluster-status-output-properties-nodes-items-properties-machine-id-from-etcmachineid.md))
+
+* cannot be null
+
+* defined in: [get-cluster-status output](get-cluster-status-output-properties-nodes-items-properties-machine-id-from-etcmachineid.md "http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/nodes/items/properties/machine_id")
+
+### machine\_id Type
+
+`string` ([Machine id from /etc/machine.id](get-cluster-status-output-properties-nodes-items-properties-machine-id-from-etcmachineid.md))
+
+## vpn
+
+WireGuard VPN details
+
+`vpn`
+
+* is required
+
+* Type: `object` ([Details](get-cluster-status-output-properties-nodes-items-properties-vpn.md))
+
+* cannot be null
+
+* defined in: [get-cluster-status output](get-cluster-status-output-properties-nodes-items-properties-vpn.md "http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/nodes/items/properties/vpn")
+
+### vpn Type
+
+`object` ([Details](get-cluster-status-output-properties-nodes-items-properties-vpn.md))
diff --git a/core/get-cluster-status-output-properties-nodes.md b/core/get-cluster-status-output-properties-nodes.md
new file mode 100644
index 000000000..10be6eb6f
--- /dev/null
+++ b/core/get-cluster-status-output-properties-nodes.md
@@ -0,0 +1,15 @@
+# Untitled array in get-cluster-status output Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/nodes
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-cluster-status-output.json\*](cluster/get-cluster-status-output.json "open original schema") |
+
+## nodes Type
+
+`object[]` ([Details](get-cluster-status-output-properties-nodes-items.md))
diff --git a/core/get-cluster-status-output.json b/core/get-cluster-status-output.json
new file mode 100644
index 000000000..8b4d14341
--- /dev/null
+++ b/core/get-cluster-status-output.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"get-cluster-status output","$id":"http://schema.nethserver.org/cluster/get-cluster-status-output.json","description":"Output schema of the get-cluster-status action","examples":[{"ui_name":"mycluster","initialized":true,"leader":true,"nodes":[{"id":2,"ui_name":"node2@ams3","local":false,"online":true,"hostname":"dn2.worker.cluster0.gs.nethserver.net","machine_id":"96b91e27d15ae6d7ef0cc79c621f7904","vpn":{"ip_address":"10.5.4.2","public_key":"0yLfAut1CwatFb0k0sim6oPudIOWMzJsO9ggYVmvXBg=","endpoint":"1.2.3.4","last_seen":1631198401,"rcvd":5989132,"sent":6097216,"keepalive":25}},{"id":1,"ui_name":"node1@sfo3","local":true,"online":false,"vpn":{"ip_address":"10.5.4.1","public_key":"c4BSbQV3zG1qIK1eSUfVvwLtTBxRuI1y5IWmddZgals="}}],"leader_url":"https://server1.nethserver.org/cluster-admin/","default_password":true}],"type":"object","properties":{"initialized":{"description":"Set to true if the node has been configured, false otherwise","type":"boolean"},"ui_name":{"title":"Display name","type":"string"},"leader":{"description":"Set to true if the running node is the leader, false otherwise","type":"boolean"},"leader_url":{"description":"UI URL of leader node","type":"string"},"default_password":{"description":"Set to true if the admin user has still the default passwsord, false otherwise","type":"boolean"},"nodes":{"type":"array","items":{"type":"object","properties":{"id":{"description":"Node ID","type":"integer"},"ui_name":{"title":"Display name","type":"string"},"local":{"description":"Set to true if the action is running on the listed node. ","type":"boolean"},"hostname":{"title":"Machine fully qualified hostname","type":"string"},"machine_id":{"title":"Machine id from /etc/machine.id","type":"string"},"vpn":{"description":"WireGuard VPN details","type":"object","properties":{"ip_address":{"description":"VPN node IP","type":"string"},"public_key":{"description":"WireGuard VPN publick key","type":"string"},"endpoint":{"description":"WireGuard VPN endpoint","type":"string"},"lastseen":{"description":"Timestamp of last peer hanshake","type":"integer"},"sent":{"description":"Bytes sent to the peer","type":"integer"},"rcvd":{"description":"Bytes received from the peer","type":"integer"},"keepalive":{"description":"Seconds of persistent keepalive","type":"integer"}},"required":["ip_address","public_key"]}},"required":["online","id","ui_name","local","vpn"]}}},"required":["initialized","ui_name","nodes","leader","leader_url","default_password"]}
diff --git a/core/get-cluster-status-output.md b/core/get-cluster-status-output.md
new file mode 100644
index 000000000..28b8c00b7
--- /dev/null
+++ b/core/get-cluster-status-output.md
@@ -0,0 +1,175 @@
+# get-cluster-status output Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-cluster-status-output.json
+```
+
+Output schema of the get-cluster-status action
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [get-cluster-status-output.json](cluster/get-cluster-status-output.json "open original schema") |
+
+## get-cluster-status output Type
+
+`object` ([get-cluster-status output](get-cluster-status-output.md))
+
+## get-cluster-status output Examples
+
+```json
+{
+ "ui_name": "mycluster",
+ "initialized": true,
+ "leader": true,
+ "nodes": [
+ {
+ "id": 2,
+ "ui_name": "node2@ams3",
+ "local": false,
+ "online": true,
+ "hostname": "dn2.worker.cluster0.gs.nethserver.net",
+ "machine_id": "96b91e27d15ae6d7ef0cc79c621f7904",
+ "vpn": {
+ "ip_address": "10.5.4.2",
+ "public_key": "0yLfAut1CwatFb0k0sim6oPudIOWMzJsO9ggYVmvXBg=",
+ "endpoint": "1.2.3.4",
+ "last_seen": 1631198401,
+ "rcvd": 5989132,
+ "sent": 6097216,
+ "keepalive": 25
+ }
+ },
+ {
+ "id": 1,
+ "ui_name": "node1@sfo3",
+ "local": true,
+ "online": false,
+ "vpn": {
+ "ip_address": "10.5.4.1",
+ "public_key": "c4BSbQV3zG1qIK1eSUfVvwLtTBxRuI1y5IWmddZgals="
+ }
+ }
+ ],
+ "leader_url": "https://server1.nethserver.org/cluster-admin/",
+ "default_password": true
+}
+```
+
+# get-cluster-status output Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------------------- | :-------- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [initialized](#initialized) | `boolean` | Required | cannot be null | [get-cluster-status output](get-cluster-status-output-properties-initialized.md "http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/initialized") |
+| [ui\_name](#ui_name) | `string` | Required | cannot be null | [get-cluster-status output](get-cluster-status-output-properties-display-name.md "http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/ui_name") |
+| [leader](#leader) | `boolean` | Required | cannot be null | [get-cluster-status output](get-cluster-status-output-properties-leader.md "http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/leader") |
+| [leader\_url](#leader_url) | `string` | Required | cannot be null | [get-cluster-status output](get-cluster-status-output-properties-leader_url.md "http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/leader_url") |
+| [default\_password](#default_password) | `boolean` | Required | cannot be null | [get-cluster-status output](get-cluster-status-output-properties-default_password.md "http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/default_password") |
+| [nodes](#nodes) | `array` | Required | cannot be null | [get-cluster-status output](get-cluster-status-output-properties-nodes.md "http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/nodes") |
+
+## initialized
+
+Set to true if the node has been configured, false otherwise
+
+`initialized`
+
+* is required
+
+* Type: `boolean`
+
+* cannot be null
+
+* defined in: [get-cluster-status output](get-cluster-status-output-properties-initialized.md "http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/initialized")
+
+### initialized Type
+
+`boolean`
+
+## ui\_name
+
+
+
+`ui_name`
+
+* is required
+
+* Type: `string` ([Display name](get-cluster-status-output-properties-display-name.md))
+
+* cannot be null
+
+* defined in: [get-cluster-status output](get-cluster-status-output-properties-display-name.md "http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/ui_name")
+
+### ui\_name Type
+
+`string` ([Display name](get-cluster-status-output-properties-display-name.md))
+
+## leader
+
+Set to true if the running node is the leader, false otherwise
+
+`leader`
+
+* is required
+
+* Type: `boolean`
+
+* cannot be null
+
+* defined in: [get-cluster-status output](get-cluster-status-output-properties-leader.md "http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/leader")
+
+### leader Type
+
+`boolean`
+
+## leader\_url
+
+UI URL of leader node
+
+`leader_url`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [get-cluster-status output](get-cluster-status-output-properties-leader_url.md "http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/leader_url")
+
+### leader\_url Type
+
+`string`
+
+## default\_password
+
+Set to true if the admin user has still the default passwsord, false otherwise
+
+`default_password`
+
+* is required
+
+* Type: `boolean`
+
+* cannot be null
+
+* defined in: [get-cluster-status output](get-cluster-status-output-properties-default_password.md "http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/default_password")
+
+### default\_password Type
+
+`boolean`
+
+## nodes
+
+
+
+`nodes`
+
+* is required
+
+* Type: `object[]` ([Details](get-cluster-status-output-properties-nodes-items.md))
+
+* cannot be null
+
+* defined in: [get-cluster-status output](get-cluster-status-output-properties-nodes.md "http://schema.nethserver.org/cluster/get-cluster-status-output.json#/properties/nodes")
+
+### nodes Type
+
+`object[]` ([Details](get-cluster-status-output-properties-nodes-items.md))
diff --git a/core/get-defaults-input.json b/core/get-defaults-input.json
new file mode 100644
index 000000000..b3700b6e5
--- /dev/null
+++ b/core/get-defaults-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"get-defaults input","$id":"http://schema.nethserver.org/cluster/get-defaults-input.json","description":"The action expects a null value as input","examples":[null],"type":"null"}
diff --git a/core/get-defaults-input.md b/core/get-defaults-input.md
new file mode 100644
index 000000000..15f302ac3
--- /dev/null
+++ b/core/get-defaults-input.md
@@ -0,0 +1,21 @@
+# get-defaults input Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-defaults-input.json
+```
+
+The action expects a null value as input
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-defaults-input.json](cluster/get-defaults-input.json "open original schema") |
+
+## get-defaults input Type
+
+`null`, the value must be null ([get-defaults input](get-defaults-input.md))
+
+## get-defaults input Examples
+
+```json
+null
+```
diff --git a/core/get-defaults-output-properties-vpn-properties-host.md b/core/get-defaults-output-properties-vpn-properties-host.md
new file mode 100644
index 000000000..390a8a15d
--- /dev/null
+++ b/core/get-defaults-output-properties-vpn-properties-host.md
@@ -0,0 +1,15 @@
+# Untitled string in get-defaults output Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-defaults-output.json#/properties/vpn/properties/host
+```
+
+WireGuard public endpoint name
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-defaults-output.json\*](cluster/get-defaults-output.json "open original schema") |
+
+## host Type
+
+`string`
diff --git a/core/get-defaults-output-properties-vpn-properties-network.md b/core/get-defaults-output-properties-vpn-properties-network.md
new file mode 100644
index 000000000..ffcdc5b64
--- /dev/null
+++ b/core/get-defaults-output-properties-vpn-properties-network.md
@@ -0,0 +1,15 @@
+# Untitled string in get-defaults output Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-defaults-output.json#/properties/vpn/properties/network
+```
+
+Wireguard peer network
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-defaults-output.json\*](cluster/get-defaults-output.json "open original schema") |
+
+## network Type
+
+`string`
diff --git a/core/get-defaults-output-properties-vpn-properties-port.md b/core/get-defaults-output-properties-vpn-properties-port.md
new file mode 100644
index 000000000..3f86d76af
--- /dev/null
+++ b/core/get-defaults-output-properties-vpn-properties-port.md
@@ -0,0 +1,15 @@
+# Untitled integer in get-defaults output Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-defaults-output.json#/properties/vpn/properties/port
+```
+
+WireGuard listen port
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-defaults-output.json\*](cluster/get-defaults-output.json "open original schema") |
+
+## port Type
+
+`integer`
diff --git a/core/get-defaults-output-properties-vpn.md b/core/get-defaults-output-properties-vpn.md
new file mode 100644
index 000000000..c3fe1dcd4
--- /dev/null
+++ b/core/get-defaults-output-properties-vpn.md
@@ -0,0 +1,77 @@
+# Untitled object in get-defaults output Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-defaults-output.json#/properties/vpn
+```
+
+WireGuard VPN defaults
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [get-defaults-output.json\*](cluster/get-defaults-output.json "open original schema") |
+
+## vpn Type
+
+`object` ([Details](get-defaults-output-properties-vpn.md))
+
+# vpn Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------ | :-------- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [host](#host) | `string` | Required | cannot be null | [get-defaults output](get-defaults-output-properties-vpn-properties-host.md "http://schema.nethserver.org/cluster/get-defaults-output.json#/properties/vpn/properties/host") |
+| [port](#port) | `integer` | Required | cannot be null | [get-defaults output](get-defaults-output-properties-vpn-properties-port.md "http://schema.nethserver.org/cluster/get-defaults-output.json#/properties/vpn/properties/port") |
+| [network](#network) | `string` | Required | cannot be null | [get-defaults output](get-defaults-output-properties-vpn-properties-network.md "http://schema.nethserver.org/cluster/get-defaults-output.json#/properties/vpn/properties/network") |
+
+## host
+
+WireGuard public endpoint name
+
+`host`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [get-defaults output](get-defaults-output-properties-vpn-properties-host.md "http://schema.nethserver.org/cluster/get-defaults-output.json#/properties/vpn/properties/host")
+
+### host Type
+
+`string`
+
+## port
+
+WireGuard listen port
+
+`port`
+
+* is required
+
+* Type: `integer`
+
+* cannot be null
+
+* defined in: [get-defaults output](get-defaults-output-properties-vpn-properties-port.md "http://schema.nethserver.org/cluster/get-defaults-output.json#/properties/vpn/properties/port")
+
+### port Type
+
+`integer`
+
+## network
+
+Wireguard peer network
+
+`network`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [get-defaults output](get-defaults-output-properties-vpn-properties-network.md "http://schema.nethserver.org/cluster/get-defaults-output.json#/properties/vpn/properties/network")
+
+### network Type
+
+`string`
diff --git a/core/get-defaults-output.json b/core/get-defaults-output.json
new file mode 100644
index 000000000..fecdc0590
--- /dev/null
+++ b/core/get-defaults-output.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"get-defaults output","$id":"http://schema.nethserver.org/cluster/get-defaults-output.json","description":"Output schema of the get-defaults action","examples":[{"vpn":{"host":"server.nethserver.org","port":55820,"network":"10.5.4.0/24"}}],"type":"object","properties":{"vpn":{"type":"object","description":"WireGuard VPN defaults","properties":{"host":{"description":"WireGuard public endpoint name","type":"string"},"port":{"description":"WireGuard listen port","type":"integer"},"network":{"description":"Wireguard peer network","type":"string"}},"required":["host","port","network"]}}}
diff --git a/core/get-defaults-output.md b/core/get-defaults-output.md
new file mode 100644
index 000000000..cc810a1a1
--- /dev/null
+++ b/core/get-defaults-output.md
@@ -0,0 +1,51 @@
+# get-defaults output Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-defaults-output.json
+```
+
+Output schema of the get-defaults action
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [get-defaults-output.json](cluster/get-defaults-output.json "open original schema") |
+
+## get-defaults output Type
+
+`object` ([get-defaults output](get-defaults-output.md))
+
+## get-defaults output Examples
+
+```json
+{
+ "vpn": {
+ "host": "server.nethserver.org",
+ "port": 55820,
+ "network": "10.5.4.0/24"
+ }
+}
+```
+
+# get-defaults output Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :---------- | :------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------- |
+| [vpn](#vpn) | `object` | Optional | cannot be null | [get-defaults output](get-defaults-output-properties-vpn.md "http://schema.nethserver.org/cluster/get-defaults-output.json#/properties/vpn") |
+
+## vpn
+
+WireGuard VPN defaults
+
+`vpn`
+
+* is optional
+
+* Type: `object` ([Details](get-defaults-output-properties-vpn.md))
+
+* cannot be null
+
+* defined in: [get-defaults output](get-defaults-output-properties-vpn.md "http://schema.nethserver.org/cluster/get-defaults-output.json#/properties/vpn")
+
+### vpn Type
+
+`object` ([Details](get-defaults-output-properties-vpn.md))
diff --git a/core/get-domain-group-input-properties-domain-name.md b/core/get-domain-group-input-properties-domain-name.md
new file mode 100644
index 000000000..dd3df3b13
--- /dev/null
+++ b/core/get-domain-group-input-properties-domain-name.md
@@ -0,0 +1,19 @@
+# Domain name Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-domain-group-input.json#/properties/domain
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-domain-group-input.json\*](cluster/get-domain-group-input.json "open original schema") |
+
+## domain Type
+
+`string` ([Domain name](get-domain-group-input-properties-domain-name.md))
+
+## domain Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/get-domain-group-input-properties-group-name.md b/core/get-domain-group-input-properties-group-name.md
new file mode 100644
index 000000000..64690f493
--- /dev/null
+++ b/core/get-domain-group-input-properties-group-name.md
@@ -0,0 +1,19 @@
+# Group name Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-domain-group-input.json#/properties/group
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-domain-group-input.json\*](cluster/get-domain-group-input.json "open original schema") |
+
+## group Type
+
+`string` ([Group name](get-domain-group-input-properties-group-name.md))
+
+## group Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/get-domain-group-input.json b/core/get-domain-group-input.json
new file mode 100644
index 000000000..dda848994
--- /dev/null
+++ b/core/get-domain-group-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"get-domain-group input","description":"Get the details of the given group","$id":"http://schema.nethserver.org/cluster/get-domain-group-input.json","examples":[{"domain":"dom.test","group":"domain admins"}],"type":"object","required":["domain","group"],"properties":{"domain":{"type":"string","title":"Domain name","minLength":1},"group":{"type":"string","title":"Group name","minLength":1}}}
diff --git a/core/get-domain-group-input.md b/core/get-domain-group-input.md
new file mode 100644
index 000000000..5c97f0608
--- /dev/null
+++ b/core/get-domain-group-input.md
@@ -0,0 +1,75 @@
+# get-domain-group input Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-domain-group-input.json
+```
+
+Get the details of the given group
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [get-domain-group-input.json](cluster/get-domain-group-input.json "open original schema") |
+
+## get-domain-group input Type
+
+`object` ([get-domain-group input](get-domain-group-input.md))
+
+## get-domain-group input Examples
+
+```json
+{
+ "domain": "dom.test",
+ "group": "domain admins"
+}
+```
+
+# get-domain-group input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :---------------- | :------- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [domain](#domain) | `string` | Required | cannot be null | [get-domain-group input](get-domain-group-input-properties-domain-name.md "http://schema.nethserver.org/cluster/get-domain-group-input.json#/properties/domain") |
+| [group](#group) | `string` | Required | cannot be null | [get-domain-group input](get-domain-group-input-properties-group-name.md "http://schema.nethserver.org/cluster/get-domain-group-input.json#/properties/group") |
+
+## domain
+
+
+
+`domain`
+
+* is required
+
+* Type: `string` ([Domain name](get-domain-group-input-properties-domain-name.md))
+
+* cannot be null
+
+* defined in: [get-domain-group input](get-domain-group-input-properties-domain-name.md "http://schema.nethserver.org/cluster/get-domain-group-input.json#/properties/domain")
+
+### domain Type
+
+`string` ([Domain name](get-domain-group-input-properties-domain-name.md))
+
+### domain Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## group
+
+
+
+`group`
+
+* is required
+
+* Type: `string` ([Group name](get-domain-group-input-properties-group-name.md))
+
+* cannot be null
+
+* defined in: [get-domain-group input](get-domain-group-input-properties-group-name.md "http://schema.nethserver.org/cluster/get-domain-group-input.json#/properties/group")
+
+### group Type
+
+`string` ([Group name](get-domain-group-input-properties-group-name.md))
+
+### group Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/get-domain-group-output-defs-group-details-properties-description.md b/core/get-domain-group-output-defs-group-details-properties-description.md
new file mode 100644
index 000000000..7e30f9957
--- /dev/null
+++ b/core/get-domain-group-output-defs-group-details-properties-description.md
@@ -0,0 +1,15 @@
+# Description Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-domain-group-output.json#/$defs/group/properties/description
+```
+
+A brief description of the group purpose
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-domain-group-output.json\*](cluster/get-domain-group-output.json "open original schema") |
+
+## description Type
+
+`string` ([Description](get-domain-group-output-defs-group-details-properties-description.md))
diff --git a/core/get-domain-group-output-defs-group-details-properties-group-members.md b/core/get-domain-group-output-defs-group-details-properties-group-members.md
new file mode 100644
index 000000000..265abfc23
--- /dev/null
+++ b/core/get-domain-group-output-defs-group-details-properties-group-members.md
@@ -0,0 +1,15 @@
+# Group members Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-domain-group-output.json#/$defs/group/properties/users
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-domain-group-output.json\*](cluster/get-domain-group-output.json "open original schema") |
+
+## users Type
+
+`object[]` ([Details](get-domain-group-output-defs-user.md))
diff --git a/core/get-domain-group-output-defs-group-details-properties-group.md b/core/get-domain-group-output-defs-group-details-properties-group.md
new file mode 100644
index 000000000..47f290977
--- /dev/null
+++ b/core/get-domain-group-output-defs-group-details-properties-group.md
@@ -0,0 +1,19 @@
+# Untitled string in get-domain-group output Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-domain-group-output.json#/$defs/group/properties/group
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-domain-group-output.json\*](cluster/get-domain-group-output.json "open original schema") |
+
+## group Type
+
+`string`
+
+## group Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/get-domain-group-output-defs-group-details.md b/core/get-domain-group-output-defs-group-details.md
new file mode 100644
index 000000000..ca41af874
--- /dev/null
+++ b/core/get-domain-group-output-defs-group-details.md
@@ -0,0 +1,81 @@
+# Group details Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-domain-group-output.json#/$defs/group
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [get-domain-group-output.json\*](cluster/get-domain-group-output.json "open original schema") |
+
+## group Type
+
+`object` ([Group details](get-domain-group-output-defs-group-details.md))
+
+# group Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :-------------------------- | :------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| [group](#group) | `string` | Required | cannot be null | [get-domain-group output](get-domain-group-output-defs-group-details-properties-group.md "http://schema.nethserver.org/cluster/get-domain-group-output.json#/$defs/group/properties/group") |
+| [description](#description) | `string` | Required | cannot be null | [get-domain-group output](get-domain-group-output-defs-group-details-properties-description.md "http://schema.nethserver.org/cluster/get-domain-group-output.json#/$defs/group/properties/description") |
+| [users](#users) | `array` | Required | cannot be null | [get-domain-group output](get-domain-group-output-defs-group-details-properties-group-members.md "http://schema.nethserver.org/cluster/get-domain-group-output.json#/$defs/group/properties/users") |
+
+## group
+
+
+
+`group`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [get-domain-group output](get-domain-group-output-defs-group-details-properties-group.md "http://schema.nethserver.org/cluster/get-domain-group-output.json#/$defs/group/properties/group")
+
+### group Type
+
+`string`
+
+### group Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## description
+
+A brief description of the group purpose
+
+`description`
+
+* is required
+
+* Type: `string` ([Description](get-domain-group-output-defs-group-details-properties-description.md))
+
+* cannot be null
+
+* defined in: [get-domain-group output](get-domain-group-output-defs-group-details-properties-description.md "http://schema.nethserver.org/cluster/get-domain-group-output.json#/$defs/group/properties/description")
+
+### description Type
+
+`string` ([Description](get-domain-group-output-defs-group-details-properties-description.md))
+
+## users
+
+
+
+`users`
+
+* is required
+
+* Type: `object[]` ([Details](get-domain-group-output-defs-user.md))
+
+* cannot be null
+
+* defined in: [get-domain-group output](get-domain-group-output-defs-group-details-properties-group-members.md "http://schema.nethserver.org/cluster/get-domain-group-output.json#/$defs/group/properties/users")
+
+### users Type
+
+`object[]` ([Details](get-domain-group-output-defs-user.md))
diff --git a/core/get-domain-group-output-defs-user-properties-display-name.md b/core/get-domain-group-output-defs-user-properties-display-name.md
new file mode 100644
index 000000000..17bf39b47
--- /dev/null
+++ b/core/get-domain-group-output-defs-user-properties-display-name.md
@@ -0,0 +1,15 @@
+# Display name Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-domain-group-output.json#/$defs/user/properties/display_name
+```
+
+Preferred name of a person to be used when displaying entries (RFC 2798/2.3)
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-domain-group-output.json\*](cluster/get-domain-group-output.json "open original schema") |
+
+## display\_name Type
+
+`string` ([Display name](get-domain-group-output-defs-user-properties-display-name.md))
diff --git a/core/get-domain-group-output-defs-user-properties-user.md b/core/get-domain-group-output-defs-user-properties-user.md
new file mode 100644
index 000000000..8a3a3671f
--- /dev/null
+++ b/core/get-domain-group-output-defs-user-properties-user.md
@@ -0,0 +1,19 @@
+# Untitled string in get-domain-group output Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-domain-group-output.json#/$defs/user/properties/user
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-domain-group-output.json\*](cluster/get-domain-group-output.json "open original schema") |
+
+## user Type
+
+`string`
+
+## user Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/get-domain-group-output-defs-user.md b/core/get-domain-group-output-defs-user.md
new file mode 100644
index 000000000..f67564e0b
--- /dev/null
+++ b/core/get-domain-group-output-defs-user.md
@@ -0,0 +1,62 @@
+# Untitled object in get-domain-group output Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-domain-group-output.json#/$defs/user
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [get-domain-group-output.json\*](cluster/get-domain-group-output.json "open original schema") |
+
+## user Type
+
+`object` ([Details](get-domain-group-output-defs-user.md))
+
+# user Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :----------------------------- | :------- | :------- | :------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [user](#user) | `string` | Required | cannot be null | [get-domain-group output](get-domain-group-output-defs-user-properties-user.md "http://schema.nethserver.org/cluster/get-domain-group-output.json#/$defs/user/properties/user") |
+| [display\_name](#display_name) | `string` | Required | cannot be null | [get-domain-group output](get-domain-group-output-defs-user-properties-display-name.md "http://schema.nethserver.org/cluster/get-domain-group-output.json#/$defs/user/properties/display_name") |
+
+## user
+
+
+
+`user`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [get-domain-group output](get-domain-group-output-defs-user-properties-user.md "http://schema.nethserver.org/cluster/get-domain-group-output.json#/$defs/user/properties/user")
+
+### user Type
+
+`string`
+
+### user Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## display\_name
+
+Preferred name of a person to be used when displaying entries (RFC 2798/2.3)
+
+`display_name`
+
+* is required
+
+* Type: `string` ([Display name](get-domain-group-output-defs-user-properties-display-name.md))
+
+* cannot be null
+
+* defined in: [get-domain-group output](get-domain-group-output-defs-user-properties-display-name.md "http://schema.nethserver.org/cluster/get-domain-group-output.json#/$defs/user/properties/display_name")
+
+### display\_name Type
+
+`string` ([Display name](get-domain-group-output-defs-user-properties-display-name.md))
diff --git a/core/get-domain-group-output-defs.md b/core/get-domain-group-output-defs.md
new file mode 100644
index 000000000..7d870f0f6
--- /dev/null
+++ b/core/get-domain-group-output-defs.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in get-domain-group output Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-domain-group-output.json#/$defs
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-domain-group-output.json\*](cluster/get-domain-group-output.json "open original schema") |
+
+## $defs Type
+
+unknown
diff --git a/core/get-domain-group-output.json b/core/get-domain-group-output.json
new file mode 100644
index 000000000..841b17993
--- /dev/null
+++ b/core/get-domain-group-output.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"get-domain-group output","description":"Return the details of a group","$id":"http://schema.nethserver.org/cluster/get-domain-group-output.json","examples":[{"group":{"group":"Domain Admins","description":"Designated administrators of the domain","users":[{"user":"Administrator","display_name":"Administrator"}]}}],"type":"object","required":["group"],"properties":{"group":{"$ref":"#/$defs/group"}},"$defs":{"user":{"type":"object","required":["user","display_name"],"properties":{"user":{"type":"string","minLength":1},"display_name":{"type":"string","title":"Display name","description":"Preferred name of a person to be used when displaying entries (RFC 2798/2.3)"}}},"group":{"title":"Group details","type":"object","required":["group","description","users"],"properties":{"group":{"type":"string","minLength":1},"description":{"type":"string","title":"Description","description":"A brief description of the group purpose"},"users":{"title":"Group members","type":"array","items":{"$ref":"#/$defs/user"}}}}}}
diff --git a/core/get-domain-group-output.md b/core/get-domain-group-output.md
new file mode 100644
index 000000000..e8c6c4d33
--- /dev/null
+++ b/core/get-domain-group-output.md
@@ -0,0 +1,183 @@
+# get-domain-group output Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-domain-group-output.json
+```
+
+Return the details of a group
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [get-domain-group-output.json](cluster/get-domain-group-output.json "open original schema") |
+
+## get-domain-group output Type
+
+`object` ([get-domain-group output](get-domain-group-output.md))
+
+## get-domain-group output Examples
+
+```json
+{
+ "group": {
+ "group": "Domain Admins",
+ "description": "Designated administrators of the domain",
+ "users": [
+ {
+ "user": "Administrator",
+ "display_name": "Administrator"
+ }
+ ]
+ }
+}
+```
+
+# get-domain-group output Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :-------------- | :------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [group](#group) | `object` | Required | cannot be null | [get-domain-group output](get-domain-group-output-defs-group-details.md "http://schema.nethserver.org/cluster/get-domain-group-output.json#/properties/group") |
+
+## group
+
+
+
+`group`
+
+* is required
+
+* Type: `object` ([Group details](get-domain-group-output-defs-group-details.md))
+
+* cannot be null
+
+* defined in: [get-domain-group output](get-domain-group-output-defs-group-details.md "http://schema.nethserver.org/cluster/get-domain-group-output.json#/properties/group")
+
+### group Type
+
+`object` ([Group details](get-domain-group-output-defs-group-details.md))
+
+# get-domain-group output Definitions
+
+## Definitions group user
+
+Reference this group by using
+
+```json
+{"$ref":"http://schema.nethserver.org/cluster/get-domain-group-output.json#/$defs/user"}
+```
+
+| Property | Type | Required | Nullable | Defined by |
+| :----------------------------- | :------- | :------- | :------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [user](#user) | `string` | Required | cannot be null | [get-domain-group output](get-domain-group-output-defs-user-properties-user.md "http://schema.nethserver.org/cluster/get-domain-group-output.json#/$defs/user/properties/user") |
+| [display\_name](#display_name) | `string` | Required | cannot be null | [get-domain-group output](get-domain-group-output-defs-user-properties-display-name.md "http://schema.nethserver.org/cluster/get-domain-group-output.json#/$defs/user/properties/display_name") |
+
+### user
+
+
+
+`user`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [get-domain-group output](get-domain-group-output-defs-user-properties-user.md "http://schema.nethserver.org/cluster/get-domain-group-output.json#/$defs/user/properties/user")
+
+#### user Type
+
+`string`
+
+#### user Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+### display\_name
+
+Preferred name of a person to be used when displaying entries (RFC 2798/2.3)
+
+`display_name`
+
+* is required
+
+* Type: `string` ([Display name](get-domain-group-output-defs-user-properties-display-name.md))
+
+* cannot be null
+
+* defined in: [get-domain-group output](get-domain-group-output-defs-user-properties-display-name.md "http://schema.nethserver.org/cluster/get-domain-group-output.json#/$defs/user/properties/display_name")
+
+#### display\_name Type
+
+`string` ([Display name](get-domain-group-output-defs-user-properties-display-name.md))
+
+## Definitions group group
+
+Reference this group by using
+
+```json
+{"$ref":"http://schema.nethserver.org/cluster/get-domain-group-output.json#/$defs/group"}
+```
+
+| Property | Type | Required | Nullable | Defined by |
+| :-------------------------- | :------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| [group](#group-1) | `string` | Required | cannot be null | [get-domain-group output](get-domain-group-output-defs-group-details-properties-group.md "http://schema.nethserver.org/cluster/get-domain-group-output.json#/$defs/group/properties/group") |
+| [description](#description) | `string` | Required | cannot be null | [get-domain-group output](get-domain-group-output-defs-group-details-properties-description.md "http://schema.nethserver.org/cluster/get-domain-group-output.json#/$defs/group/properties/description") |
+| [users](#users) | `array` | Required | cannot be null | [get-domain-group output](get-domain-group-output-defs-group-details-properties-group-members.md "http://schema.nethserver.org/cluster/get-domain-group-output.json#/$defs/group/properties/users") |
+
+### group
+
+
+
+`group`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [get-domain-group output](get-domain-group-output-defs-group-details-properties-group.md "http://schema.nethserver.org/cluster/get-domain-group-output.json#/$defs/group/properties/group")
+
+#### group Type
+
+`string`
+
+#### group Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+### description
+
+A brief description of the group purpose
+
+`description`
+
+* is required
+
+* Type: `string` ([Description](get-domain-group-output-defs-group-details-properties-description.md))
+
+* cannot be null
+
+* defined in: [get-domain-group output](get-domain-group-output-defs-group-details-properties-description.md "http://schema.nethserver.org/cluster/get-domain-group-output.json#/$defs/group/properties/description")
+
+#### description Type
+
+`string` ([Description](get-domain-group-output-defs-group-details-properties-description.md))
+
+### users
+
+
+
+`users`
+
+* is required
+
+* Type: `object[]` ([Details](get-domain-group-output-defs-user.md))
+
+* cannot be null
+
+* defined in: [get-domain-group output](get-domain-group-output-defs-group-details-properties-group-members.md "http://schema.nethserver.org/cluster/get-domain-group-output.json#/$defs/group/properties/users")
+
+#### users Type
+
+`object[]` ([Details](get-domain-group-output-defs-user.md))
diff --git a/core/get-domain-user-input-properties-domain-name.md b/core/get-domain-user-input-properties-domain-name.md
new file mode 100644
index 000000000..bd2d9c93c
--- /dev/null
+++ b/core/get-domain-user-input-properties-domain-name.md
@@ -0,0 +1,19 @@
+# Domain name Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-domain-user-input.json#/properties/domain
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-domain-user-input.json\*](cluster/get-domain-user-input.json "open original schema") |
+
+## domain Type
+
+`string` ([Domain name](get-domain-user-input-properties-domain-name.md))
+
+## domain Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/get-domain-user-input-properties-user-name.md b/core/get-domain-user-input-properties-user-name.md
new file mode 100644
index 000000000..24b9b0d5b
--- /dev/null
+++ b/core/get-domain-user-input-properties-user-name.md
@@ -0,0 +1,19 @@
+# User name Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-domain-user-input.json#/properties/user
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-domain-user-input.json\*](cluster/get-domain-user-input.json "open original schema") |
+
+## user Type
+
+`string` ([User name](get-domain-user-input-properties-user-name.md))
+
+## user Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/get-domain-user-input.json b/core/get-domain-user-input.json
new file mode 100644
index 000000000..ce6027719
--- /dev/null
+++ b/core/get-domain-user-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"get-domain-user input","description":"Get the details of the given user","$id":"http://schema.nethserver.org/cluster/get-domain-user-input.json","examples":[{"domain":"dom.test","user":"Administrator"}],"type":"object","required":["domain","user"],"properties":{"domain":{"type":"string","title":"Domain name","minLength":1},"user":{"type":"string","title":"User name","minLength":1}}}
diff --git a/core/get-domain-user-input.md b/core/get-domain-user-input.md
new file mode 100644
index 000000000..d63ca4dd8
--- /dev/null
+++ b/core/get-domain-user-input.md
@@ -0,0 +1,75 @@
+# get-domain-user input Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-domain-user-input.json
+```
+
+Get the details of the given user
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [get-domain-user-input.json](cluster/get-domain-user-input.json "open original schema") |
+
+## get-domain-user input Type
+
+`object` ([get-domain-user input](get-domain-user-input.md))
+
+## get-domain-user input Examples
+
+```json
+{
+ "domain": "dom.test",
+ "user": "Administrator"
+}
+```
+
+# get-domain-user input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :---------------- | :------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| [domain](#domain) | `string` | Required | cannot be null | [get-domain-user input](get-domain-user-input-properties-domain-name.md "http://schema.nethserver.org/cluster/get-domain-user-input.json#/properties/domain") |
+| [user](#user) | `string` | Required | cannot be null | [get-domain-user input](get-domain-user-input-properties-user-name.md "http://schema.nethserver.org/cluster/get-domain-user-input.json#/properties/user") |
+
+## domain
+
+
+
+`domain`
+
+* is required
+
+* Type: `string` ([Domain name](get-domain-user-input-properties-domain-name.md))
+
+* cannot be null
+
+* defined in: [get-domain-user input](get-domain-user-input-properties-domain-name.md "http://schema.nethserver.org/cluster/get-domain-user-input.json#/properties/domain")
+
+### domain Type
+
+`string` ([Domain name](get-domain-user-input-properties-domain-name.md))
+
+### domain Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## user
+
+
+
+`user`
+
+* is required
+
+* Type: `string` ([User name](get-domain-user-input-properties-user-name.md))
+
+* cannot be null
+
+* defined in: [get-domain-user input](get-domain-user-input-properties-user-name.md "http://schema.nethserver.org/cluster/get-domain-user-input.json#/properties/user")
+
+### user Type
+
+`string` ([User name](get-domain-user-input-properties-user-name.md))
+
+### user Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/get-domain-user-output-defs-group-details-properties-description.md b/core/get-domain-user-output-defs-group-details-properties-description.md
new file mode 100644
index 000000000..d86845f8a
--- /dev/null
+++ b/core/get-domain-user-output-defs-group-details-properties-description.md
@@ -0,0 +1,15 @@
+# Description Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-domain-user-output.json#/$defs/group/properties/description
+```
+
+A brief description of the group purpose
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-domain-user-output.json\*](cluster/get-domain-user-output.json "open original schema") |
+
+## description Type
+
+`string` ([Description](get-domain-user-output-defs-group-details-properties-description.md))
diff --git a/core/get-domain-user-output-defs-group-details-properties-group.md b/core/get-domain-user-output-defs-group-details-properties-group.md
new file mode 100644
index 000000000..dd99f72a9
--- /dev/null
+++ b/core/get-domain-user-output-defs-group-details-properties-group.md
@@ -0,0 +1,19 @@
+# Untitled string in get-domain-user output Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-domain-user-output.json#/$defs/group/properties/group
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-domain-user-output.json\*](cluster/get-domain-user-output.json "open original schema") |
+
+## group Type
+
+`string`
+
+## group Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/get-domain-user-output-defs-group-details.md b/core/get-domain-user-output-defs-group-details.md
new file mode 100644
index 000000000..8205fe18d
--- /dev/null
+++ b/core/get-domain-user-output-defs-group-details.md
@@ -0,0 +1,62 @@
+# Group details Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-domain-user-output.json#/$defs/group
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [get-domain-user-output.json\*](cluster/get-domain-user-output.json "open original schema") |
+
+## group Type
+
+`object` ([Group details](get-domain-user-output-defs-group-details.md))
+
+# group Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :-------------------------- | :------- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [group](#group) | `string` | Required | cannot be null | [get-domain-user output](get-domain-user-output-defs-group-details-properties-group.md "http://schema.nethserver.org/cluster/get-domain-user-output.json#/$defs/group/properties/group") |
+| [description](#description) | `string` | Required | cannot be null | [get-domain-user output](get-domain-user-output-defs-group-details-properties-description.md "http://schema.nethserver.org/cluster/get-domain-user-output.json#/$defs/group/properties/description") |
+
+## group
+
+
+
+`group`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [get-domain-user output](get-domain-user-output-defs-group-details-properties-group.md "http://schema.nethserver.org/cluster/get-domain-user-output.json#/$defs/group/properties/group")
+
+### group Type
+
+`string`
+
+### group Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## description
+
+A brief description of the group purpose
+
+`description`
+
+* is required
+
+* Type: `string` ([Description](get-domain-user-output-defs-group-details-properties-description.md))
+
+* cannot be null
+
+* defined in: [get-domain-user output](get-domain-user-output-defs-group-details-properties-description.md "http://schema.nethserver.org/cluster/get-domain-user-output.json#/$defs/group/properties/description")
+
+### description Type
+
+`string` ([Description](get-domain-user-output-defs-group-details-properties-description.md))
diff --git a/core/get-domain-user-output-defs-user-properties-display-name.md b/core/get-domain-user-output-defs-user-properties-display-name.md
new file mode 100644
index 000000000..6af532e29
--- /dev/null
+++ b/core/get-domain-user-output-defs-user-properties-display-name.md
@@ -0,0 +1,15 @@
+# Display name Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-domain-user-output.json#/$defs/user/properties/display_name
+```
+
+Preferred name of a person to be used when displaying entries (RFC 2798/2.3)
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-domain-user-output.json\*](cluster/get-domain-user-output.json "open original schema") |
+
+## display\_name Type
+
+`string` ([Display name](get-domain-user-output-defs-user-properties-display-name.md))
diff --git a/core/get-domain-user-output-defs-user-properties-list-of-groups-the-user-belongs-to.md b/core/get-domain-user-output-defs-user-properties-list-of-groups-the-user-belongs-to.md
new file mode 100644
index 000000000..5cb48d87a
--- /dev/null
+++ b/core/get-domain-user-output-defs-user-properties-list-of-groups-the-user-belongs-to.md
@@ -0,0 +1,15 @@
+# List of groups the user belongs to Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-domain-user-output.json#/$defs/user/properties/groups
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-domain-user-output.json\*](cluster/get-domain-user-output.json "open original schema") |
+
+## groups Type
+
+`object[]` ([Group details](get-domain-user-output-defs-group-details.md))
diff --git a/core/get-domain-user-output-defs-user-properties-locked.md b/core/get-domain-user-output-defs-user-properties-locked.md
new file mode 100644
index 000000000..9a52c284d
--- /dev/null
+++ b/core/get-domain-user-output-defs-user-properties-locked.md
@@ -0,0 +1,15 @@
+# Locked Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-domain-user-output.json#/$defs/user/properties/locked
+```
+
+True, if the user account has been locked, preventing the user from logging in
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-domain-user-output.json\*](cluster/get-domain-user-output.json "open original schema") |
+
+## locked Type
+
+`boolean` ([Locked](get-domain-user-output-defs-user-properties-locked.md))
diff --git a/core/get-domain-user-output-defs-user-properties-user.md b/core/get-domain-user-output-defs-user-properties-user.md
new file mode 100644
index 000000000..e3f424338
--- /dev/null
+++ b/core/get-domain-user-output-defs-user-properties-user.md
@@ -0,0 +1,19 @@
+# Untitled string in get-domain-user output Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-domain-user-output.json#/$defs/user/properties/user
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-domain-user-output.json\*](cluster/get-domain-user-output.json "open original schema") |
+
+## user Type
+
+`string`
+
+## user Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/get-domain-user-output-defs-user.md b/core/get-domain-user-output-defs-user.md
new file mode 100644
index 000000000..e99dc7413
--- /dev/null
+++ b/core/get-domain-user-output-defs-user.md
@@ -0,0 +1,100 @@
+# Untitled object in get-domain-user output Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-domain-user-output.json#/$defs/user
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [get-domain-user-output.json\*](cluster/get-domain-user-output.json "open original schema") |
+
+## user Type
+
+`object` ([Details](get-domain-user-output-defs-user.md))
+
+# user Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :----------------------------- | :-------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [user](#user) | `string` | Required | cannot be null | [get-domain-user output](get-domain-user-output-defs-user-properties-user.md "http://schema.nethserver.org/cluster/get-domain-user-output.json#/$defs/user/properties/user") |
+| [display\_name](#display_name) | `string` | Required | cannot be null | [get-domain-user output](get-domain-user-output-defs-user-properties-display-name.md "http://schema.nethserver.org/cluster/get-domain-user-output.json#/$defs/user/properties/display_name") |
+| [locked](#locked) | `boolean` | Required | cannot be null | [get-domain-user output](get-domain-user-output-defs-user-properties-locked.md "http://schema.nethserver.org/cluster/get-domain-user-output.json#/$defs/user/properties/locked") |
+| [groups](#groups) | `array` | Required | cannot be null | [get-domain-user output](get-domain-user-output-defs-user-properties-list-of-groups-the-user-belongs-to.md "http://schema.nethserver.org/cluster/get-domain-user-output.json#/$defs/user/properties/groups") |
+
+## user
+
+
+
+`user`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [get-domain-user output](get-domain-user-output-defs-user-properties-user.md "http://schema.nethserver.org/cluster/get-domain-user-output.json#/$defs/user/properties/user")
+
+### user Type
+
+`string`
+
+### user Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## display\_name
+
+Preferred name of a person to be used when displaying entries (RFC 2798/2.3)
+
+`display_name`
+
+* is required
+
+* Type: `string` ([Display name](get-domain-user-output-defs-user-properties-display-name.md))
+
+* cannot be null
+
+* defined in: [get-domain-user output](get-domain-user-output-defs-user-properties-display-name.md "http://schema.nethserver.org/cluster/get-domain-user-output.json#/$defs/user/properties/display_name")
+
+### display\_name Type
+
+`string` ([Display name](get-domain-user-output-defs-user-properties-display-name.md))
+
+## locked
+
+True, if the user account has been locked, preventing the user from logging in
+
+`locked`
+
+* is required
+
+* Type: `boolean` ([Locked](get-domain-user-output-defs-user-properties-locked.md))
+
+* cannot be null
+
+* defined in: [get-domain-user output](get-domain-user-output-defs-user-properties-locked.md "http://schema.nethserver.org/cluster/get-domain-user-output.json#/$defs/user/properties/locked")
+
+### locked Type
+
+`boolean` ([Locked](get-domain-user-output-defs-user-properties-locked.md))
+
+## groups
+
+
+
+`groups`
+
+* is required
+
+* Type: `object[]` ([Group details](get-domain-user-output-defs-group-details.md))
+
+* cannot be null
+
+* defined in: [get-domain-user output](get-domain-user-output-defs-user-properties-list-of-groups-the-user-belongs-to.md "http://schema.nethserver.org/cluster/get-domain-user-output.json#/$defs/user/properties/groups")
+
+### groups Type
+
+`object[]` ([Group details](get-domain-user-output-defs-group-details.md))
diff --git a/core/get-domain-user-output-defs.md b/core/get-domain-user-output-defs.md
new file mode 100644
index 000000000..b31e5a44a
--- /dev/null
+++ b/core/get-domain-user-output-defs.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in get-domain-user output Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-domain-user-output.json#/$defs
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-domain-user-output.json\*](cluster/get-domain-user-output.json "open original schema") |
+
+## $defs Type
+
+unknown
diff --git a/core/get-domain-user-output.json b/core/get-domain-user-output.json
new file mode 100644
index 000000000..48172cef2
--- /dev/null
+++ b/core/get-domain-user-output.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"get-domain-user output","description":"Return the details of a user","$id":"http://schema.nethserver.org/cluster/get-domain-user-output.json","examples":[{"user":{"user":"administrator","display_name":"Administrator","groups":[{"group":"Domain Admins","description":"Designated administrators of the domain"}]}}],"type":"object","required":["user"],"properties":{"user":{"$ref":"#/$defs/user"}},"$defs":{"user":{"type":"object","required":["user","display_name","locked","groups"],"properties":{"user":{"type":"string","minLength":1},"display_name":{"type":"string","title":"Display name","description":"Preferred name of a person to be used when displaying entries (RFC 2798/2.3)"},"locked":{"type":"boolean","title":"Locked","description":"True, if the user account has been locked, preventing the user from logging in"},"groups":{"type":"array","title":"List of groups the user belongs to","items":{"$ref":"#/$defs/group"}}}},"group":{"title":"Group details","type":"object","required":["group","description"],"properties":{"group":{"type":"string","minLength":1},"description":{"type":"string","title":"Description","description":"A brief description of the group purpose"}}}}}
diff --git a/core/get-domain-user-output.md b/core/get-domain-user-output.md
new file mode 100644
index 000000000..0d77b0f63
--- /dev/null
+++ b/core/get-domain-user-output.md
@@ -0,0 +1,202 @@
+# get-domain-user output Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-domain-user-output.json
+```
+
+Return the details of a user
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [get-domain-user-output.json](cluster/get-domain-user-output.json "open original schema") |
+
+## get-domain-user output Type
+
+`object` ([get-domain-user output](get-domain-user-output.md))
+
+## get-domain-user output Examples
+
+```json
+{
+ "user": {
+ "user": "administrator",
+ "display_name": "Administrator",
+ "groups": [
+ {
+ "group": "Domain Admins",
+ "description": "Designated administrators of the domain"
+ }
+ ]
+ }
+}
+```
+
+# get-domain-user output Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------ | :------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------ |
+| [user](#user) | `object` | Required | cannot be null | [get-domain-user output](get-domain-user-output-defs-user.md "http://schema.nethserver.org/cluster/get-domain-user-output.json#/properties/user") |
+
+## user
+
+
+
+`user`
+
+* is required
+
+* Type: `object` ([Details](get-domain-user-output-defs-user.md))
+
+* cannot be null
+
+* defined in: [get-domain-user output](get-domain-user-output-defs-user.md "http://schema.nethserver.org/cluster/get-domain-user-output.json#/properties/user")
+
+### user Type
+
+`object` ([Details](get-domain-user-output-defs-user.md))
+
+# get-domain-user output Definitions
+
+## Definitions group user
+
+Reference this group by using
+
+```json
+{"$ref":"http://schema.nethserver.org/cluster/get-domain-user-output.json#/$defs/user"}
+```
+
+| Property | Type | Required | Nullable | Defined by |
+| :----------------------------- | :-------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [user](#user-1) | `string` | Required | cannot be null | [get-domain-user output](get-domain-user-output-defs-user-properties-user.md "http://schema.nethserver.org/cluster/get-domain-user-output.json#/$defs/user/properties/user") |
+| [display\_name](#display_name) | `string` | Required | cannot be null | [get-domain-user output](get-domain-user-output-defs-user-properties-display-name.md "http://schema.nethserver.org/cluster/get-domain-user-output.json#/$defs/user/properties/display_name") |
+| [locked](#locked) | `boolean` | Required | cannot be null | [get-domain-user output](get-domain-user-output-defs-user-properties-locked.md "http://schema.nethserver.org/cluster/get-domain-user-output.json#/$defs/user/properties/locked") |
+| [groups](#groups) | `array` | Required | cannot be null | [get-domain-user output](get-domain-user-output-defs-user-properties-list-of-groups-the-user-belongs-to.md "http://schema.nethserver.org/cluster/get-domain-user-output.json#/$defs/user/properties/groups") |
+
+### user
+
+
+
+`user`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [get-domain-user output](get-domain-user-output-defs-user-properties-user.md "http://schema.nethserver.org/cluster/get-domain-user-output.json#/$defs/user/properties/user")
+
+#### user Type
+
+`string`
+
+#### user Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+### display\_name
+
+Preferred name of a person to be used when displaying entries (RFC 2798/2.3)
+
+`display_name`
+
+* is required
+
+* Type: `string` ([Display name](get-domain-user-output-defs-user-properties-display-name.md))
+
+* cannot be null
+
+* defined in: [get-domain-user output](get-domain-user-output-defs-user-properties-display-name.md "http://schema.nethserver.org/cluster/get-domain-user-output.json#/$defs/user/properties/display_name")
+
+#### display\_name Type
+
+`string` ([Display name](get-domain-user-output-defs-user-properties-display-name.md))
+
+### locked
+
+True, if the user account has been locked, preventing the user from logging in
+
+`locked`
+
+* is required
+
+* Type: `boolean` ([Locked](get-domain-user-output-defs-user-properties-locked.md))
+
+* cannot be null
+
+* defined in: [get-domain-user output](get-domain-user-output-defs-user-properties-locked.md "http://schema.nethserver.org/cluster/get-domain-user-output.json#/$defs/user/properties/locked")
+
+#### locked Type
+
+`boolean` ([Locked](get-domain-user-output-defs-user-properties-locked.md))
+
+### groups
+
+
+
+`groups`
+
+* is required
+
+* Type: `object[]` ([Group details](get-domain-user-output-defs-group-details.md))
+
+* cannot be null
+
+* defined in: [get-domain-user output](get-domain-user-output-defs-user-properties-list-of-groups-the-user-belongs-to.md "http://schema.nethserver.org/cluster/get-domain-user-output.json#/$defs/user/properties/groups")
+
+#### groups Type
+
+`object[]` ([Group details](get-domain-user-output-defs-group-details.md))
+
+## Definitions group group
+
+Reference this group by using
+
+```json
+{"$ref":"http://schema.nethserver.org/cluster/get-domain-user-output.json#/$defs/group"}
+```
+
+| Property | Type | Required | Nullable | Defined by |
+| :-------------------------- | :------- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [group](#group) | `string` | Required | cannot be null | [get-domain-user output](get-domain-user-output-defs-group-details-properties-group.md "http://schema.nethserver.org/cluster/get-domain-user-output.json#/$defs/group/properties/group") |
+| [description](#description) | `string` | Required | cannot be null | [get-domain-user output](get-domain-user-output-defs-group-details-properties-description.md "http://schema.nethserver.org/cluster/get-domain-user-output.json#/$defs/group/properties/description") |
+
+### group
+
+
+
+`group`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [get-domain-user output](get-domain-user-output-defs-group-details-properties-group.md "http://schema.nethserver.org/cluster/get-domain-user-output.json#/$defs/group/properties/group")
+
+#### group Type
+
+`string`
+
+#### group Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+### description
+
+A brief description of the group purpose
+
+`description`
+
+* is required
+
+* Type: `string` ([Description](get-domain-user-output-defs-group-details-properties-description.md))
+
+* cannot be null
+
+* defined in: [get-domain-user output](get-domain-user-output-defs-group-details-properties-description.md "http://schema.nethserver.org/cluster/get-domain-user-output.json#/$defs/group/properties/description")
+
+#### description Type
+
+`string` ([Description](get-domain-user-output-defs-group-details-properties-description.md))
diff --git a/core/get-firewall-status-output-examples-0-services-0.md b/core/get-firewall-status-output-examples-0-services-0.md
new file mode 100644
index 000000000..4585f62ae
--- /dev/null
+++ b/core/get-firewall-status-output-examples-0-services-0.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in get-firewall-status output Schema
+
+```txt
+http://schema.nethserver.org/node/get-firewall-status-output.json#/examples/0/services/0
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :----------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-firewall-status-output.json\*](node/get-firewall-status-output.json "open original schema") |
+
+## 0 Type
+
+unknown
diff --git a/core/get-firewall-status-output-examples-0-services-1.md b/core/get-firewall-status-output-examples-0-services-1.md
new file mode 100644
index 000000000..d99601107
--- /dev/null
+++ b/core/get-firewall-status-output-examples-0-services-1.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in get-firewall-status output Schema
+
+```txt
+http://schema.nethserver.org/node/get-firewall-status-output.json#/examples/0/services/1
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :----------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-firewall-status-output.json\*](node/get-firewall-status-output.json "open original schema") |
+
+## 1 Type
+
+unknown
diff --git a/core/get-firewall-status-output-examples-0.md b/core/get-firewall-status-output-examples-0.md
new file mode 100644
index 000000000..d90c2a69b
--- /dev/null
+++ b/core/get-firewall-status-output-examples-0.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in get-firewall-status output Schema
+
+```txt
+http://schema.nethserver.org/node/get-firewall-status-output.json#/examples/0
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :----------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-firewall-status-output.json\*](node/get-firewall-status-output.json "open original schema") |
+
+## 0 Type
+
+unknown
diff --git a/core/get-firewall-status-output.json b/core/get-firewall-status-output.json
new file mode 100644
index 000000000..ed63bb30e
--- /dev/null
+++ b/core/get-firewall-status-output.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"get-firewall-status output","$id":"http://schema.nethserver.org/node/get-firewall-status-output.json","description":"Output schema of the get-firewall-status action","examples":[{"interfaces":["eth0","eth1"],"services":[{"name":"dhcpv6-client","ports":["546/udp"]},{"name":"https","ports":["443/tcp"]}],"ports":["55820/udp"]}]}
diff --git a/core/get-firewall-status-output.md b/core/get-firewall-status-output.md
new file mode 100644
index 000000000..da30d338a
--- /dev/null
+++ b/core/get-firewall-status-output.md
@@ -0,0 +1,43 @@
+# get-firewall-status output Schema
+
+```txt
+http://schema.nethserver.org/node/get-firewall-status-output.json
+```
+
+Output schema of the get-firewall-status action
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-firewall-status-output.json](node/get-firewall-status-output.json "open original schema") |
+
+## get-firewall-status output Type
+
+unknown ([get-firewall-status output](get-firewall-status-output.md))
+
+## get-firewall-status output Examples
+
+```json
+{
+ "interfaces": [
+ "eth0",
+ "eth1"
+ ],
+ "services": [
+ {
+ "name": "dhcpv6-client",
+ "ports": [
+ "546/udp"
+ ]
+ },
+ {
+ "name": "https",
+ "ports": [
+ "443/tcp"
+ ]
+ }
+ ],
+ "ports": [
+ "55820/udp"
+ ]
+}
+```
diff --git a/core/get-fqdn-output-properties-domain.md b/core/get-fqdn-output-properties-domain.md
new file mode 100644
index 000000000..f282fc344
--- /dev/null
+++ b/core/get-fqdn-output-properties-domain.md
@@ -0,0 +1,15 @@
+# Untitled string in get-fqdn output Schema
+
+```txt
+http://schema.nethserver.org/node/get-fqdn-output.json#/properties/domain
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-fqdn-output.json\*](node/get-fqdn-output.json "open original schema") |
+
+## domain Type
+
+`string`
diff --git a/core/get-fqdn-output-properties-hostname.md b/core/get-fqdn-output-properties-hostname.md
new file mode 100644
index 000000000..bdb7a7bb9
--- /dev/null
+++ b/core/get-fqdn-output-properties-hostname.md
@@ -0,0 +1,15 @@
+# Untitled string in get-fqdn output Schema
+
+```txt
+http://schema.nethserver.org/node/get-fqdn-output.json#/properties/hostname
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-fqdn-output.json\*](node/get-fqdn-output.json "open original schema") |
+
+## hostname Type
+
+`string`
diff --git a/core/get-fqdn-output.json b/core/get-fqdn-output.json
new file mode 100644
index 000000000..5671e623e
--- /dev/null
+++ b/core/get-fqdn-output.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"get-fqdn output","$id":"http://schema.nethserver.org/node/get-fqdn-output.json","description":"Output schema of the get-fqdn action","examples":[{"hostname":"dn2","domain":"example.org"}],"type":"object","required":["hostname","domain"],"properties":{"hostname":{"type":"string"},"domain":{"type":"string"}}}
diff --git a/core/get-fqdn-output.md b/core/get-fqdn-output.md
new file mode 100644
index 000000000..cfe90ee4a
--- /dev/null
+++ b/core/get-fqdn-output.md
@@ -0,0 +1,67 @@
+# get-fqdn output Schema
+
+```txt
+http://schema.nethserver.org/node/get-fqdn-output.json
+```
+
+Output schema of the get-fqdn action
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :----------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [get-fqdn-output.json](node/get-fqdn-output.json "open original schema") |
+
+## get-fqdn output Type
+
+`object` ([get-fqdn output](get-fqdn-output.md))
+
+## get-fqdn output Examples
+
+```json
+{
+ "hostname": "dn2",
+ "domain": "example.org"
+}
+```
+
+# get-fqdn output Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :-------------------- | :------- | :------- | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------- |
+| [hostname](#hostname) | `string` | Required | cannot be null | [get-fqdn output](get-fqdn-output-properties-hostname.md "http://schema.nethserver.org/node/get-fqdn-output.json#/properties/hostname") |
+| [domain](#domain) | `string` | Required | cannot be null | [get-fqdn output](get-fqdn-output-properties-domain.md "http://schema.nethserver.org/node/get-fqdn-output.json#/properties/domain") |
+
+## hostname
+
+
+
+`hostname`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [get-fqdn output](get-fqdn-output-properties-hostname.md "http://schema.nethserver.org/node/get-fqdn-output.json#/properties/hostname")
+
+### hostname Type
+
+`string`
+
+## domain
+
+
+
+`domain`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [get-fqdn output](get-fqdn-output-properties-domain.md "http://schema.nethserver.org/node/get-fqdn-output.json#/properties/domain")
+
+### domain Type
+
+`string`
diff --git a/core/get-infp-output-examples-0.md b/core/get-infp-output-examples-0.md
new file mode 100644
index 000000000..43b7780a2
--- /dev/null
+++ b/core/get-infp-output-examples-0.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in get-info output Schema
+
+```txt
+http://schema.nethserver.org/node/get-infp-output.json#/examples/0
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-infp-output.json\*](node/get-infp-output.json "open original schema") |
+
+## 0 Type
+
+unknown
diff --git a/core/get-infp-output.json b/core/get-infp-output.json
new file mode 100644
index 000000000..843c762bf
--- /dev/null
+++ b/core/get-infp-output.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"get-info output","$id":"http://schema.nethserver.org/node/get-infp-output.json","description":"Output schema of the get-info action","examples":[{"hostname":"dn2.worker.cluster0.gs.nethserver.net","machine_id":"96b91e27d15ae6d7ef0cc79c621f7904"}]}
diff --git a/core/get-infp-output.md b/core/get-infp-output.md
new file mode 100644
index 000000000..1ac9cc775
--- /dev/null
+++ b/core/get-infp-output.md
@@ -0,0 +1,24 @@
+# get-info output Schema
+
+```txt
+http://schema.nethserver.org/node/get-infp-output.json
+```
+
+Output schema of the get-info action
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :----------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-infp-output.json](node/get-infp-output.json "open original schema") |
+
+## get-info output Type
+
+unknown ([get-info output](get-infp-output.md))
+
+## get-info output Examples
+
+```json
+{
+ "hostname": "dn2.worker.cluster0.gs.nethserver.net",
+ "machine_id": "96b91e27d15ae6d7ef0cc79c621f7904"
+}
+```
diff --git a/core/get-node-status-input.json b/core/get-node-status-input.json
new file mode 100644
index 000000000..14147e66c
--- /dev/null
+++ b/core/get-node-status-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"get-node-status input","$id":"http://schema.nethserver.org/node/get-node-status-input.json","description":"The action expects a null value as input","examples":[null],"type":"null"}
diff --git a/core/get-node-status-input.md b/core/get-node-status-input.md
new file mode 100644
index 000000000..129dee1b8
--- /dev/null
+++ b/core/get-node-status-input.md
@@ -0,0 +1,21 @@
+# get-node-status input Schema
+
+```txt
+http://schema.nethserver.org/node/get-node-status-input.json
+```
+
+The action expects a null value as input
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :----------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-node-status-input.json](node/get-node-status-input.json "open original schema") |
+
+## get-node-status input Type
+
+`null`, the value must be null ([get-node-status input](get-node-status-input.md))
+
+## get-node-status input Examples
+
+```json
+null
+```
diff --git a/core/get-node-status-output-properties-cpu-properties-count.md b/core/get-node-status-output-properties-cpu-properties-count.md
new file mode 100644
index 000000000..66684199b
--- /dev/null
+++ b/core/get-node-status-output-properties-cpu-properties-count.md
@@ -0,0 +1,15 @@
+# Untitled integer in get-node-status output Schema
+
+```txt
+http://schema.nethserver.org/node/get-node-status-output.json#/properties/cpu/properties/count
+```
+
+Number of physical and virtual CPUs
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-node-status-output.json\*](node/get-node-status-output.json "open original schema") |
+
+## count Type
+
+`integer`
diff --git a/core/get-node-status-output-properties-cpu-properties-info-items-properties-clock.md b/core/get-node-status-output-properties-cpu-properties-info-items-properties-clock.md
new file mode 100644
index 000000000..eb099450b
--- /dev/null
+++ b/core/get-node-status-output-properties-cpu-properties-info-items-properties-clock.md
@@ -0,0 +1,15 @@
+# Untitled string in get-node-status output Schema
+
+```txt
+http://schema.nethserver.org/node/get-node-status-output.json#/properties/cpu/properties/info/items/properties/clock
+```
+
+CPU frequency in MHz
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-node-status-output.json\*](node/get-node-status-output.json "open original schema") |
+
+## clock Type
+
+`string`
diff --git a/core/get-node-status-output-properties-cpu-properties-info-items-properties-model.md b/core/get-node-status-output-properties-cpu-properties-info-items-properties-model.md
new file mode 100644
index 000000000..d4c9d6064
--- /dev/null
+++ b/core/get-node-status-output-properties-cpu-properties-info-items-properties-model.md
@@ -0,0 +1,15 @@
+# Untitled string in get-node-status output Schema
+
+```txt
+http://schema.nethserver.org/node/get-node-status-output.json#/properties/cpu/properties/info/items/properties/model
+```
+
+CPU model
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-node-status-output.json\*](node/get-node-status-output.json "open original schema") |
+
+## model Type
+
+`string`
diff --git a/core/get-node-status-output-properties-cpu-properties-info-items-properties-vendor.md b/core/get-node-status-output-properties-cpu-properties-info-items-properties-vendor.md
new file mode 100644
index 000000000..0975af5ee
--- /dev/null
+++ b/core/get-node-status-output-properties-cpu-properties-info-items-properties-vendor.md
@@ -0,0 +1,15 @@
+# Untitled string in get-node-status output Schema
+
+```txt
+http://schema.nethserver.org/node/get-node-status-output.json#/properties/cpu/properties/info/items/properties/vendor
+```
+
+CPU vendor
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-node-status-output.json\*](node/get-node-status-output.json "open original schema") |
+
+## vendor Type
+
+`string`
diff --git a/core/get-node-status-output-properties-cpu-properties-info-items.md b/core/get-node-status-output-properties-cpu-properties-info-items.md
new file mode 100644
index 000000000..8fe824a8a
--- /dev/null
+++ b/core/get-node-status-output-properties-cpu-properties-info-items.md
@@ -0,0 +1,77 @@
+# Untitled object in get-node-status output Schema
+
+```txt
+http://schema.nethserver.org/node/get-node-status-output.json#/properties/cpu/properties/info/items
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [get-node-status-output.json\*](node/get-node-status-output.json "open original schema") |
+
+## items Type
+
+`object` ([Details](get-node-status-output-properties-cpu-properties-info-items.md))
+
+# items Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :---------------- | :------- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [vendor](#vendor) | `string` | Optional | cannot be null | [get-node-status output](get-node-status-output-properties-cpu-properties-info-items-properties-vendor.md "http://schema.nethserver.org/node/get-node-status-output.json#/properties/cpu/properties/info/items/properties/vendor") |
+| [model](#model) | `string` | Optional | cannot be null | [get-node-status output](get-node-status-output-properties-cpu-properties-info-items-properties-model.md "http://schema.nethserver.org/node/get-node-status-output.json#/properties/cpu/properties/info/items/properties/model") |
+| [clock](#clock) | `string` | Optional | cannot be null | [get-node-status output](get-node-status-output-properties-cpu-properties-info-items-properties-clock.md "http://schema.nethserver.org/node/get-node-status-output.json#/properties/cpu/properties/info/items/properties/clock") |
+
+## vendor
+
+CPU vendor
+
+`vendor`
+
+* is optional
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [get-node-status output](get-node-status-output-properties-cpu-properties-info-items-properties-vendor.md "http://schema.nethserver.org/node/get-node-status-output.json#/properties/cpu/properties/info/items/properties/vendor")
+
+### vendor Type
+
+`string`
+
+## model
+
+CPU model
+
+`model`
+
+* is optional
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [get-node-status output](get-node-status-output-properties-cpu-properties-info-items-properties-model.md "http://schema.nethserver.org/node/get-node-status-output.json#/properties/cpu/properties/info/items/properties/model")
+
+### model Type
+
+`string`
+
+## clock
+
+CPU frequency in MHz
+
+`clock`
+
+* is optional
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [get-node-status output](get-node-status-output-properties-cpu-properties-info-items-properties-clock.md "http://schema.nethserver.org/node/get-node-status-output.json#/properties/cpu/properties/info/items/properties/clock")
+
+### clock Type
+
+`string`
diff --git a/core/get-node-status-output-properties-cpu-properties-info.md b/core/get-node-status-output-properties-cpu-properties-info.md
new file mode 100644
index 000000000..54640b1af
--- /dev/null
+++ b/core/get-node-status-output-properties-cpu-properties-info.md
@@ -0,0 +1,15 @@
+# Untitled array in get-node-status output Schema
+
+```txt
+http://schema.nethserver.org/node/get-node-status-output.json#/properties/cpu/properties/info
+```
+
+CPU details
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-node-status-output.json\*](node/get-node-status-output.json "open original schema") |
+
+## info Type
+
+`object[]` ([Details](get-node-status-output-properties-cpu-properties-info-items.md))
diff --git a/core/get-node-status-output-properties-cpu-properties-usage.md b/core/get-node-status-output-properties-cpu-properties-usage.md
new file mode 100644
index 000000000..d8bad204c
--- /dev/null
+++ b/core/get-node-status-output-properties-cpu-properties-usage.md
@@ -0,0 +1,15 @@
+# Untitled number in get-node-status output Schema
+
+```txt
+http://schema.nethserver.org/node/get-node-status-output.json#/properties/cpu/properties/usage
+```
+
+Global CPU percentage usage
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-node-status-output.json\*](node/get-node-status-output.json "open original schema") |
+
+## usage Type
+
+`number`
diff --git a/core/get-node-status-output-properties-cpu.md b/core/get-node-status-output-properties-cpu.md
new file mode 100644
index 000000000..e25af7cec
--- /dev/null
+++ b/core/get-node-status-output-properties-cpu.md
@@ -0,0 +1,77 @@
+# Untitled object in get-node-status output Schema
+
+```txt
+http://schema.nethserver.org/node/get-node-status-output.json#/properties/cpu
+```
+
+Average load
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [get-node-status-output.json\*](node/get-node-status-output.json "open original schema") |
+
+## cpu Type
+
+`object` ([Details](get-node-status-output-properties-cpu.md))
+
+# cpu Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :-------------- | :-------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [count](#count) | `integer` | Optional | cannot be null | [get-node-status output](get-node-status-output-properties-cpu-properties-count.md "http://schema.nethserver.org/node/get-node-status-output.json#/properties/cpu/properties/count") |
+| [usage](#usage) | `number` | Optional | cannot be null | [get-node-status output](get-node-status-output-properties-cpu-properties-usage.md "http://schema.nethserver.org/node/get-node-status-output.json#/properties/cpu/properties/usage") |
+| [info](#info) | `array` | Optional | cannot be null | [get-node-status output](get-node-status-output-properties-cpu-properties-info.md "http://schema.nethserver.org/node/get-node-status-output.json#/properties/cpu/properties/info") |
+
+## count
+
+Number of physical and virtual CPUs
+
+`count`
+
+* is optional
+
+* Type: `integer`
+
+* cannot be null
+
+* defined in: [get-node-status output](get-node-status-output-properties-cpu-properties-count.md "http://schema.nethserver.org/node/get-node-status-output.json#/properties/cpu/properties/count")
+
+### count Type
+
+`integer`
+
+## usage
+
+Global CPU percentage usage
+
+`usage`
+
+* is optional
+
+* Type: `number`
+
+* cannot be null
+
+* defined in: [get-node-status output](get-node-status-output-properties-cpu-properties-usage.md "http://schema.nethserver.org/node/get-node-status-output.json#/properties/cpu/properties/usage")
+
+### usage Type
+
+`number`
+
+## info
+
+CPU details
+
+`info`
+
+* is optional
+
+* Type: `object[]` ([Details](get-node-status-output-properties-cpu-properties-info-items.md))
+
+* cannot be null
+
+* defined in: [get-node-status output](get-node-status-output-properties-cpu-properties-info.md "http://schema.nethserver.org/node/get-node-status-output.json#/properties/cpu/properties/info")
+
+### info Type
+
+`object[]` ([Details](get-node-status-output-properties-cpu-properties-info-items.md))
diff --git a/core/get-node-status-output-properties-disks-items-properties-device.md b/core/get-node-status-output-properties-disks-items-properties-device.md
new file mode 100644
index 000000000..265acb885
--- /dev/null
+++ b/core/get-node-status-output-properties-disks-items-properties-device.md
@@ -0,0 +1,15 @@
+# Untitled string in get-node-status output Schema
+
+```txt
+http://schema.nethserver.org/node/get-node-status-output.json#/properties/disks/items/properties/device
+```
+
+Partition device path
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-node-status-output.json\*](node/get-node-status-output.json "open original schema") |
+
+## device Type
+
+`string`
diff --git a/core/get-node-status-output-properties-disks-items-properties-free.md b/core/get-node-status-output-properties-disks-items-properties-free.md
new file mode 100644
index 000000000..70c1b4d18
--- /dev/null
+++ b/core/get-node-status-output-properties-disks-items-properties-free.md
@@ -0,0 +1,15 @@
+# Untitled integer in get-node-status output Schema
+
+```txt
+http://schema.nethserver.org/node/get-node-status-output.json#/properties/disks/items/properties/free
+```
+
+Free space
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-node-status-output.json\*](node/get-node-status-output.json "open original schema") |
+
+## free Type
+
+`integer`
diff --git a/core/get-node-status-output-properties-disks-items-properties-fstype.md b/core/get-node-status-output-properties-disks-items-properties-fstype.md
new file mode 100644
index 000000000..742e9272f
--- /dev/null
+++ b/core/get-node-status-output-properties-disks-items-properties-fstype.md
@@ -0,0 +1,15 @@
+# Untitled string in get-node-status output Schema
+
+```txt
+http://schema.nethserver.org/node/get-node-status-output.json#/properties/disks/items/properties/fstype
+```
+
+File system type
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-node-status-output.json\*](node/get-node-status-output.json "open original schema") |
+
+## fstype Type
+
+`string`
diff --git a/core/get-node-status-output-properties-disks-items-properties-mountpoint.md b/core/get-node-status-output-properties-disks-items-properties-mountpoint.md
new file mode 100644
index 000000000..5684dfdd6
--- /dev/null
+++ b/core/get-node-status-output-properties-disks-items-properties-mountpoint.md
@@ -0,0 +1,15 @@
+# Untitled string in get-node-status output Schema
+
+```txt
+http://schema.nethserver.org/node/get-node-status-output.json#/properties/disks/items/properties/mountpoint
+```
+
+Mount point
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-node-status-output.json\*](node/get-node-status-output.json "open original schema") |
+
+## mountpoint Type
+
+`string`
diff --git a/core/get-node-status-output-properties-disks-items-properties-total.md b/core/get-node-status-output-properties-disks-items-properties-total.md
new file mode 100644
index 000000000..92d5e7600
--- /dev/null
+++ b/core/get-node-status-output-properties-disks-items-properties-total.md
@@ -0,0 +1,15 @@
+# Untitled integer in get-node-status output Schema
+
+```txt
+http://schema.nethserver.org/node/get-node-status-output.json#/properties/disks/items/properties/total
+```
+
+Total space
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-node-status-output.json\*](node/get-node-status-output.json "open original schema") |
+
+## total Type
+
+`integer`
diff --git a/core/get-node-status-output-properties-disks-items-properties-used.md b/core/get-node-status-output-properties-disks-items-properties-used.md
new file mode 100644
index 000000000..e0115106f
--- /dev/null
+++ b/core/get-node-status-output-properties-disks-items-properties-used.md
@@ -0,0 +1,15 @@
+# Untitled integer in get-node-status output Schema
+
+```txt
+http://schema.nethserver.org/node/get-node-status-output.json#/properties/disks/items/properties/used
+```
+
+Used space
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-node-status-output.json\*](node/get-node-status-output.json "open original schema") |
+
+## used Type
+
+`integer`
diff --git a/core/get-node-status-output-properties-disks-items.md b/core/get-node-status-output-properties-disks-items.md
new file mode 100644
index 000000000..02b3ad9fd
--- /dev/null
+++ b/core/get-node-status-output-properties-disks-items.md
@@ -0,0 +1,134 @@
+# Untitled object in get-node-status output Schema
+
+```txt
+http://schema.nethserver.org/node/get-node-status-output.json#/properties/disks/items
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [get-node-status-output.json\*](node/get-node-status-output.json "open original schema") |
+
+## items Type
+
+`object` ([Details](get-node-status-output-properties-disks-items.md))
+
+# items Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------ | :-------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [total](#total) | `integer` | Optional | cannot be null | [get-node-status output](get-node-status-output-properties-disks-items-properties-total.md "http://schema.nethserver.org/node/get-node-status-output.json#/properties/disks/items/properties/total") |
+| [used](#used) | `integer` | Optional | cannot be null | [get-node-status output](get-node-status-output-properties-disks-items-properties-used.md "http://schema.nethserver.org/node/get-node-status-output.json#/properties/disks/items/properties/used") |
+| [free](#free) | `integer` | Optional | cannot be null | [get-node-status output](get-node-status-output-properties-disks-items-properties-free.md "http://schema.nethserver.org/node/get-node-status-output.json#/properties/disks/items/properties/free") |
+| [device](#device) | `string` | Optional | cannot be null | [get-node-status output](get-node-status-output-properties-disks-items-properties-device.md "http://schema.nethserver.org/node/get-node-status-output.json#/properties/disks/items/properties/device") |
+| [mountpoint](#mountpoint) | `string` | Optional | cannot be null | [get-node-status output](get-node-status-output-properties-disks-items-properties-mountpoint.md "http://schema.nethserver.org/node/get-node-status-output.json#/properties/disks/items/properties/mountpoint") |
+| [fstype](#fstype) | `string` | Optional | cannot be null | [get-node-status output](get-node-status-output-properties-disks-items-properties-fstype.md "http://schema.nethserver.org/node/get-node-status-output.json#/properties/disks/items/properties/fstype") |
+
+## total
+
+Total space
+
+`total`
+
+* is optional
+
+* Type: `integer`
+
+* cannot be null
+
+* defined in: [get-node-status output](get-node-status-output-properties-disks-items-properties-total.md "http://schema.nethserver.org/node/get-node-status-output.json#/properties/disks/items/properties/total")
+
+### total Type
+
+`integer`
+
+## used
+
+Used space
+
+`used`
+
+* is optional
+
+* Type: `integer`
+
+* cannot be null
+
+* defined in: [get-node-status output](get-node-status-output-properties-disks-items-properties-used.md "http://schema.nethserver.org/node/get-node-status-output.json#/properties/disks/items/properties/used")
+
+### used Type
+
+`integer`
+
+## free
+
+Free space
+
+`free`
+
+* is optional
+
+* Type: `integer`
+
+* cannot be null
+
+* defined in: [get-node-status output](get-node-status-output-properties-disks-items-properties-free.md "http://schema.nethserver.org/node/get-node-status-output.json#/properties/disks/items/properties/free")
+
+### free Type
+
+`integer`
+
+## device
+
+Partition device path
+
+`device`
+
+* is optional
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [get-node-status output](get-node-status-output-properties-disks-items-properties-device.md "http://schema.nethserver.org/node/get-node-status-output.json#/properties/disks/items/properties/device")
+
+### device Type
+
+`string`
+
+## mountpoint
+
+Mount point
+
+`mountpoint`
+
+* is optional
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [get-node-status output](get-node-status-output-properties-disks-items-properties-mountpoint.md "http://schema.nethserver.org/node/get-node-status-output.json#/properties/disks/items/properties/mountpoint")
+
+### mountpoint Type
+
+`string`
+
+## fstype
+
+File system type
+
+`fstype`
+
+* is optional
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [get-node-status output](get-node-status-output-properties-disks-items-properties-fstype.md "http://schema.nethserver.org/node/get-node-status-output.json#/properties/disks/items/properties/fstype")
+
+### fstype Type
+
+`string`
diff --git a/core/get-node-status-output-properties-disks.md b/core/get-node-status-output-properties-disks.md
new file mode 100644
index 000000000..1a43bab4d
--- /dev/null
+++ b/core/get-node-status-output-properties-disks.md
@@ -0,0 +1,15 @@
+# Untitled array in get-node-status output Schema
+
+```txt
+http://schema.nethserver.org/node/get-node-status-output.json#/properties/disks
+```
+
+Storage information by partition
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-node-status-output.json\*](node/get-node-status-output.json "open original schema") |
+
+## disks Type
+
+`object[]` ([Details](get-node-status-output-properties-disks-items.md))
diff --git a/core/get-node-status-output-properties-load-properties-15min.md b/core/get-node-status-output-properties-load-properties-15min.md
new file mode 100644
index 000000000..4b97cabfa
--- /dev/null
+++ b/core/get-node-status-output-properties-load-properties-15min.md
@@ -0,0 +1,15 @@
+# Untitled number in get-node-status output Schema
+
+```txt
+http://schema.nethserver.org/node/get-node-status-output.json#/properties/load/properties/15min
+```
+
+15 minutes
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-node-status-output.json\*](node/get-node-status-output.json "open original schema") |
+
+## 15min Type
+
+`number`
diff --git a/core/get-node-status-output-properties-load-properties-1min.md b/core/get-node-status-output-properties-load-properties-1min.md
new file mode 100644
index 000000000..5f1ddcc3f
--- /dev/null
+++ b/core/get-node-status-output-properties-load-properties-1min.md
@@ -0,0 +1,15 @@
+# Untitled number in get-node-status output Schema
+
+```txt
+http://schema.nethserver.org/node/get-node-status-output.json#/properties/load/properties/1min
+```
+
+1 minute
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-node-status-output.json\*](node/get-node-status-output.json "open original schema") |
+
+## 1min Type
+
+`number`
diff --git a/core/get-node-status-output-properties-load-properties-5min.md b/core/get-node-status-output-properties-load-properties-5min.md
new file mode 100644
index 000000000..93ec787a1
--- /dev/null
+++ b/core/get-node-status-output-properties-load-properties-5min.md
@@ -0,0 +1,15 @@
+# Untitled number in get-node-status output Schema
+
+```txt
+http://schema.nethserver.org/node/get-node-status-output.json#/properties/load/properties/5min
+```
+
+5 minutes
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-node-status-output.json\*](node/get-node-status-output.json "open original schema") |
+
+## 5min Type
+
+`number`
diff --git a/core/get-node-status-output-properties-load.md b/core/get-node-status-output-properties-load.md
new file mode 100644
index 000000000..ae0d9f17c
--- /dev/null
+++ b/core/get-node-status-output-properties-load.md
@@ -0,0 +1,77 @@
+# Untitled object in get-node-status output Schema
+
+```txt
+http://schema.nethserver.org/node/get-node-status-output.json#/properties/load
+```
+
+Average load
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [get-node-status-output.json\*](node/get-node-status-output.json "open original schema") |
+
+## load Type
+
+`object` ([Details](get-node-status-output-properties-load.md))
+
+# load Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :-------------- | :------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [1min](#1min) | `number` | Optional | cannot be null | [get-node-status output](get-node-status-output-properties-load-properties-1min.md "http://schema.nethserver.org/node/get-node-status-output.json#/properties/load/properties/1min") |
+| [5min](#5min) | `number` | Optional | cannot be null | [get-node-status output](get-node-status-output-properties-load-properties-5min.md "http://schema.nethserver.org/node/get-node-status-output.json#/properties/load/properties/5min") |
+| [15min](#15min) | `number` | Optional | cannot be null | [get-node-status output](get-node-status-output-properties-load-properties-15min.md "http://schema.nethserver.org/node/get-node-status-output.json#/properties/load/properties/15min") |
+
+## 1min
+
+1 minute
+
+`1min`
+
+* is optional
+
+* Type: `number`
+
+* cannot be null
+
+* defined in: [get-node-status output](get-node-status-output-properties-load-properties-1min.md "http://schema.nethserver.org/node/get-node-status-output.json#/properties/load/properties/1min")
+
+### 1min Type
+
+`number`
+
+## 5min
+
+5 minutes
+
+`5min`
+
+* is optional
+
+* Type: `number`
+
+* cannot be null
+
+* defined in: [get-node-status output](get-node-status-output-properties-load-properties-5min.md "http://schema.nethserver.org/node/get-node-status-output.json#/properties/load/properties/5min")
+
+### 5min Type
+
+`number`
+
+## 15min
+
+15 minutes
+
+`15min`
+
+* is optional
+
+* Type: `number`
+
+* cannot be null
+
+* defined in: [get-node-status output](get-node-status-output-properties-load-properties-15min.md "http://schema.nethserver.org/node/get-node-status-output.json#/properties/load/properties/15min")
+
+### 15min Type
+
+`number`
diff --git a/core/get-node-status-output-properties-memory-properties-free.md b/core/get-node-status-output-properties-memory-properties-free.md
new file mode 100644
index 000000000..79a5f1981
--- /dev/null
+++ b/core/get-node-status-output-properties-memory-properties-free.md
@@ -0,0 +1,15 @@
+# Untitled integer in get-node-status output Schema
+
+```txt
+http://schema.nethserver.org/node/get-node-status-output.json#/properties/memory/properties/free
+```
+
+Free memory
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-node-status-output.json\*](node/get-node-status-output.json "open original schema") |
+
+## free Type
+
+`integer`
diff --git a/core/get-node-status-output-properties-memory-properties-total.md b/core/get-node-status-output-properties-memory-properties-total.md
new file mode 100644
index 000000000..68be4d2fa
--- /dev/null
+++ b/core/get-node-status-output-properties-memory-properties-total.md
@@ -0,0 +1,15 @@
+# Untitled integer in get-node-status output Schema
+
+```txt
+http://schema.nethserver.org/node/get-node-status-output.json#/properties/memory/properties/total
+```
+
+Total memory
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-node-status-output.json\*](node/get-node-status-output.json "open original schema") |
+
+## total Type
+
+`integer`
diff --git a/core/get-node-status-output-properties-memory-properties-used.md b/core/get-node-status-output-properties-memory-properties-used.md
new file mode 100644
index 000000000..90f8eb460
--- /dev/null
+++ b/core/get-node-status-output-properties-memory-properties-used.md
@@ -0,0 +1,15 @@
+# Untitled integer in get-node-status output Schema
+
+```txt
+http://schema.nethserver.org/node/get-node-status-output.json#/properties/memory/properties/used
+```
+
+Used memory
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-node-status-output.json\*](node/get-node-status-output.json "open original schema") |
+
+## used Type
+
+`integer`
diff --git a/core/get-node-status-output-properties-memory.md b/core/get-node-status-output-properties-memory.md
new file mode 100644
index 000000000..e5e04be71
--- /dev/null
+++ b/core/get-node-status-output-properties-memory.md
@@ -0,0 +1,77 @@
+# Untitled object in get-node-status output Schema
+
+```txt
+http://schema.nethserver.org/node/get-node-status-output.json#/properties/memory
+```
+
+Memory statistics
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [get-node-status-output.json\*](node/get-node-status-output.json "open original schema") |
+
+## memory Type
+
+`object` ([Details](get-node-status-output-properties-memory.md))
+
+# memory Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :-------------- | :-------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [total](#total) | `integer` | Optional | cannot be null | [get-node-status output](get-node-status-output-properties-memory-properties-total.md "http://schema.nethserver.org/node/get-node-status-output.json#/properties/memory/properties/total") |
+| [used](#used) | `integer` | Optional | cannot be null | [get-node-status output](get-node-status-output-properties-memory-properties-used.md "http://schema.nethserver.org/node/get-node-status-output.json#/properties/memory/properties/used") |
+| [free](#free) | `integer` | Optional | cannot be null | [get-node-status output](get-node-status-output-properties-memory-properties-free.md "http://schema.nethserver.org/node/get-node-status-output.json#/properties/memory/properties/free") |
+
+## total
+
+Total memory
+
+`total`
+
+* is optional
+
+* Type: `integer`
+
+* cannot be null
+
+* defined in: [get-node-status output](get-node-status-output-properties-memory-properties-total.md "http://schema.nethserver.org/node/get-node-status-output.json#/properties/memory/properties/total")
+
+### total Type
+
+`integer`
+
+## used
+
+Used memory
+
+`used`
+
+* is optional
+
+* Type: `integer`
+
+* cannot be null
+
+* defined in: [get-node-status output](get-node-status-output-properties-memory-properties-used.md "http://schema.nethserver.org/node/get-node-status-output.json#/properties/memory/properties/used")
+
+### used Type
+
+`integer`
+
+## free
+
+Free memory
+
+`free`
+
+* is optional
+
+* Type: `integer`
+
+* cannot be null
+
+* defined in: [get-node-status output](get-node-status-output-properties-memory-properties-free.md "http://schema.nethserver.org/node/get-node-status-output.json#/properties/memory/properties/free")
+
+### free Type
+
+`integer`
diff --git a/core/get-node-status-output-properties-swap-properties-free.md b/core/get-node-status-output-properties-swap-properties-free.md
new file mode 100644
index 000000000..cbabf3bc7
--- /dev/null
+++ b/core/get-node-status-output-properties-swap-properties-free.md
@@ -0,0 +1,15 @@
+# Untitled integer in get-node-status output Schema
+
+```txt
+http://schema.nethserver.org/node/get-node-status-output.json#/properties/swap/properties/free
+```
+
+Free SWAP
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-node-status-output.json\*](node/get-node-status-output.json "open original schema") |
+
+## free Type
+
+`integer`
diff --git a/core/get-node-status-output-properties-swap-properties-total.md b/core/get-node-status-output-properties-swap-properties-total.md
new file mode 100644
index 000000000..4933d22a7
--- /dev/null
+++ b/core/get-node-status-output-properties-swap-properties-total.md
@@ -0,0 +1,15 @@
+# Untitled integer in get-node-status output Schema
+
+```txt
+http://schema.nethserver.org/node/get-node-status-output.json#/properties/swap/properties/total
+```
+
+Total SWAP
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-node-status-output.json\*](node/get-node-status-output.json "open original schema") |
+
+## total Type
+
+`integer`
diff --git a/core/get-node-status-output-properties-swap-properties-used.md b/core/get-node-status-output-properties-swap-properties-used.md
new file mode 100644
index 000000000..579df2c8a
--- /dev/null
+++ b/core/get-node-status-output-properties-swap-properties-used.md
@@ -0,0 +1,15 @@
+# Untitled integer in get-node-status output Schema
+
+```txt
+http://schema.nethserver.org/node/get-node-status-output.json#/properties/swap/properties/used
+```
+
+Used SWAP
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-node-status-output.json\*](node/get-node-status-output.json "open original schema") |
+
+## used Type
+
+`integer`
diff --git a/core/get-node-status-output-properties-swap.md b/core/get-node-status-output-properties-swap.md
new file mode 100644
index 000000000..4bba4e3d9
--- /dev/null
+++ b/core/get-node-status-output-properties-swap.md
@@ -0,0 +1,77 @@
+# Untitled object in get-node-status output Schema
+
+```txt
+http://schema.nethserver.org/node/get-node-status-output.json#/properties/swap
+```
+
+SWAP statistics
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [get-node-status-output.json\*](node/get-node-status-output.json "open original schema") |
+
+## swap Type
+
+`object` ([Details](get-node-status-output-properties-swap.md))
+
+# swap Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :-------------- | :-------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [total](#total) | `integer` | Optional | cannot be null | [get-node-status output](get-node-status-output-properties-swap-properties-total.md "http://schema.nethserver.org/node/get-node-status-output.json#/properties/swap/properties/total") |
+| [used](#used) | `integer` | Optional | cannot be null | [get-node-status output](get-node-status-output-properties-swap-properties-used.md "http://schema.nethserver.org/node/get-node-status-output.json#/properties/swap/properties/used") |
+| [free](#free) | `integer` | Optional | cannot be null | [get-node-status output](get-node-status-output-properties-swap-properties-free.md "http://schema.nethserver.org/node/get-node-status-output.json#/properties/swap/properties/free") |
+
+## total
+
+Total SWAP
+
+`total`
+
+* is optional
+
+* Type: `integer`
+
+* cannot be null
+
+* defined in: [get-node-status output](get-node-status-output-properties-swap-properties-total.md "http://schema.nethserver.org/node/get-node-status-output.json#/properties/swap/properties/total")
+
+### total Type
+
+`integer`
+
+## used
+
+Used SWAP
+
+`used`
+
+* is optional
+
+* Type: `integer`
+
+* cannot be null
+
+* defined in: [get-node-status output](get-node-status-output-properties-swap-properties-used.md "http://schema.nethserver.org/node/get-node-status-output.json#/properties/swap/properties/used")
+
+### used Type
+
+`integer`
+
+## free
+
+Free SWAP
+
+`free`
+
+* is optional
+
+* Type: `integer`
+
+* cannot be null
+
+* defined in: [get-node-status output](get-node-status-output-properties-swap-properties-free.md "http://schema.nethserver.org/node/get-node-status-output.json#/properties/swap/properties/free")
+
+### free Type
+
+`integer`
diff --git a/core/get-node-status-output.json b/core/get-node-status-output.json
new file mode 100644
index 000000000..488858382
--- /dev/null
+++ b/core/get-node-status-output.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"get-node-status output","$id":"http://schema.nethserver.org/node/get-node-status-output.json","description":"Output schema of the get-node-status action","examples":[{"load":{"1min":0,"5min":0,"15min":0},"cpu":{"count":1,"usage":0,"info":[{"vendor":"GenuineIntel","model":"DO-Premium-Intel","clock":"2494.144"}]},"memory":{"total":1023934464,"used":370835456,"free":653099008},"swap":{"total":0,"used":0,"free":0},"disks":[{"device":"/dev/vda1","mountpoint":"/","fstype":"ext4","total":26638249984,"used":2510962688,"free":23022039040},{"device":"/dev/vda15","mountpoint":"/boot/efi","fstype":"vfat","total":129718272,"used":6160384,"free":123557888},{"device":"/dev/vda1","mountpoint":"/var/lib/containers/storage/overlay","fstype":"ext4","total":26638249984,"used":2510962688,"free":23022039040}]}],"type":"object","properties":{"load":{"description":"Average load","type":"object","properties":{"1min":{"description":"1 minute","type":"number"},"5min":{"description":"5 minutes","type":"number"},"15min":{"description":"15 minutes","type":"number"}}},"cpu":{"description":"Average load","type":"object","properties":{"count":{"description":"Number of physical and virtual CPUs","type":"integer"},"usage":{"description":"Global CPU percentage usage","type":"number"},"info":{"description":"CPU details","type":"array","items":{"type":"object","properties":{"vendor":{"description":"CPU vendor","type":"string"},"model":{"description":"CPU model","type":"string"},"clock":{"description":"CPU frequency in MHz","type":"string"}}}}}},"memory":{"description":"Memory statistics","type":"object","properties":{"total":{"description":"Total memory","type":"integer"},"used":{"description":"Used memory","type":"integer"},"free":{"description":"Free memory","type":"integer"}}},"swap":{"description":"SWAP statistics","type":"object","properties":{"total":{"description":"Total SWAP","type":"integer"},"used":{"description":"Used SWAP","type":"integer"},"free":{"description":"Free SWAP","type":"integer"}}},"disks":{"description":"Storage information by partition","type":"array","items":{"type":"object","properties":{"total":{"description":"Total space","type":"integer"},"used":{"description":"Used space","type":"integer"},"free":{"description":"Free space","type":"integer"},"device":{"description":"Partition device path","type":"string"},"mountpoint":{"description":"Mount point","type":"string"},"fstype":{"description":"File system type","type":"string"}}}}},"required":["load","cpu","swap","disks"]}
diff --git a/core/get-node-status-output.md b/core/get-node-status-output.md
new file mode 100644
index 000000000..3067f957e
--- /dev/null
+++ b/core/get-node-status-output.md
@@ -0,0 +1,174 @@
+# get-node-status output Schema
+
+```txt
+http://schema.nethserver.org/node/get-node-status-output.json
+```
+
+Output schema of the get-node-status action
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [get-node-status-output.json](node/get-node-status-output.json "open original schema") |
+
+## get-node-status output Type
+
+`object` ([get-node-status output](get-node-status-output.md))
+
+## get-node-status output Examples
+
+```json
+{
+ "load": {
+ "1min": 0,
+ "5min": 0,
+ "15min": 0
+ },
+ "cpu": {
+ "count": 1,
+ "usage": 0,
+ "info": [
+ {
+ "vendor": "GenuineIntel",
+ "model": "DO-Premium-Intel",
+ "clock": "2494.144"
+ }
+ ]
+ },
+ "memory": {
+ "total": 1023934464,
+ "used": 370835456,
+ "free": 653099008
+ },
+ "swap": {
+ "total": 0,
+ "used": 0,
+ "free": 0
+ },
+ "disks": [
+ {
+ "device": "/dev/vda1",
+ "mountpoint": "/",
+ "fstype": "ext4",
+ "total": 26638249984,
+ "used": 2510962688,
+ "free": 23022039040
+ },
+ {
+ "device": "/dev/vda15",
+ "mountpoint": "/boot/efi",
+ "fstype": "vfat",
+ "total": 129718272,
+ "used": 6160384,
+ "free": 123557888
+ },
+ {
+ "device": "/dev/vda1",
+ "mountpoint": "/var/lib/containers/storage/overlay",
+ "fstype": "ext4",
+ "total": 26638249984,
+ "used": 2510962688,
+ "free": 23022039040
+ }
+ ]
+}
+```
+
+# get-node-status output Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :---------------- | :------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [load](#load) | `object` | Required | cannot be null | [get-node-status output](get-node-status-output-properties-load.md "http://schema.nethserver.org/node/get-node-status-output.json#/properties/load") |
+| [cpu](#cpu) | `object` | Required | cannot be null | [get-node-status output](get-node-status-output-properties-cpu.md "http://schema.nethserver.org/node/get-node-status-output.json#/properties/cpu") |
+| [memory](#memory) | `object` | Optional | cannot be null | [get-node-status output](get-node-status-output-properties-memory.md "http://schema.nethserver.org/node/get-node-status-output.json#/properties/memory") |
+| [swap](#swap) | `object` | Required | cannot be null | [get-node-status output](get-node-status-output-properties-swap.md "http://schema.nethserver.org/node/get-node-status-output.json#/properties/swap") |
+| [disks](#disks) | `array` | Required | cannot be null | [get-node-status output](get-node-status-output-properties-disks.md "http://schema.nethserver.org/node/get-node-status-output.json#/properties/disks") |
+
+## load
+
+Average load
+
+`load`
+
+* is required
+
+* Type: `object` ([Details](get-node-status-output-properties-load.md))
+
+* cannot be null
+
+* defined in: [get-node-status output](get-node-status-output-properties-load.md "http://schema.nethserver.org/node/get-node-status-output.json#/properties/load")
+
+### load Type
+
+`object` ([Details](get-node-status-output-properties-load.md))
+
+## cpu
+
+Average load
+
+`cpu`
+
+* is required
+
+* Type: `object` ([Details](get-node-status-output-properties-cpu.md))
+
+* cannot be null
+
+* defined in: [get-node-status output](get-node-status-output-properties-cpu.md "http://schema.nethserver.org/node/get-node-status-output.json#/properties/cpu")
+
+### cpu Type
+
+`object` ([Details](get-node-status-output-properties-cpu.md))
+
+## memory
+
+Memory statistics
+
+`memory`
+
+* is optional
+
+* Type: `object` ([Details](get-node-status-output-properties-memory.md))
+
+* cannot be null
+
+* defined in: [get-node-status output](get-node-status-output-properties-memory.md "http://schema.nethserver.org/node/get-node-status-output.json#/properties/memory")
+
+### memory Type
+
+`object` ([Details](get-node-status-output-properties-memory.md))
+
+## swap
+
+SWAP statistics
+
+`swap`
+
+* is required
+
+* Type: `object` ([Details](get-node-status-output-properties-swap.md))
+
+* cannot be null
+
+* defined in: [get-node-status output](get-node-status-output-properties-swap.md "http://schema.nethserver.org/node/get-node-status-output.json#/properties/swap")
+
+### swap Type
+
+`object` ([Details](get-node-status-output-properties-swap.md))
+
+## disks
+
+Storage information by partition
+
+`disks`
+
+* is required
+
+* Type: `object[]` ([Details](get-node-status-output-properties-disks-items.md))
+
+* cannot be null
+
+* defined in: [get-node-status output](get-node-status-output-properties-disks.md "http://schema.nethserver.org/node/get-node-status-output.json#/properties/disks")
+
+### disks Type
+
+`object[]` ([Details](get-node-status-output-properties-disks-items.md))
diff --git a/core/get-smarthost-properties-enabled.md b/core/get-smarthost-properties-enabled.md
new file mode 100644
index 000000000..beb8e9c11
--- /dev/null
+++ b/core/get-smarthost-properties-enabled.md
@@ -0,0 +1,15 @@
+# enabled Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-smarthost.json#/properties/enabled
+```
+
+Enable or disable the smarthost settings
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-smarthost.json\*](cluster/get-smarthost.json "open original schema") |
+
+## enabled Type
+
+`boolean` ([enabled](get-smarthost-properties-enabled.md))
diff --git a/core/get-smarthost-properties-encrypt_smtp.md b/core/get-smarthost-properties-encrypt_smtp.md
new file mode 100644
index 000000000..59e1e321b
--- /dev/null
+++ b/core/get-smarthost-properties-encrypt_smtp.md
@@ -0,0 +1,25 @@
+# encrypt\_smtp Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-smarthost.json#/properties/encrypt_smtp
+```
+
+Enable or disable the tls encryption with the smtp server
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-smarthost.json\*](cluster/get-smarthost.json "open original schema") |
+
+## encrypt\_smtp Type
+
+`string` ([encrypt\_smtp](get-smarthost-properties-encrypt_smtp.md))
+
+## encrypt\_smtp Constraints
+
+**enum**: the value of this property must be equal to one of the following values:
+
+| Value | Explanation |
+| :----------- | :---------- |
+| `"none"` | |
+| `"starttls"` | |
+| `"tls"` | |
diff --git a/core/get-smarthost-properties-host.md b/core/get-smarthost-properties-host.md
new file mode 100644
index 000000000..5522eab79
--- /dev/null
+++ b/core/get-smarthost-properties-host.md
@@ -0,0 +1,19 @@
+# host Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-smarthost.json#/properties/host
+```
+
+Host name for the smarthost, like 'wiki.nethserver.org'
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-smarthost.json\*](cluster/get-smarthost.json "open original schema") |
+
+## host Type
+
+`string` ([host](get-smarthost-properties-host.md))
+
+## host Constraints
+
+**(international) hostname**: the string must be an (IDN) hostname, according to [RFC 5890, section 2.3.2.3](https://tools.ietf.org/html/rfc5890 "check the specification")
diff --git a/core/get-smarthost-properties-password.md b/core/get-smarthost-properties-password.md
new file mode 100644
index 000000000..8bbf0ae52
--- /dev/null
+++ b/core/get-smarthost-properties-password.md
@@ -0,0 +1,15 @@
+# password Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-smarthost.json#/properties/password
+```
+
+Password to use the smarthost
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-smarthost.json\*](cluster/get-smarthost.json "open original schema") |
+
+## password Type
+
+`string` ([password](get-smarthost-properties-password.md))
diff --git a/core/get-smarthost-properties-port.md b/core/get-smarthost-properties-port.md
new file mode 100644
index 000000000..31033ba0f
--- /dev/null
+++ b/core/get-smarthost-properties-port.md
@@ -0,0 +1,21 @@
+# port Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-smarthost.json#/properties/port
+```
+
+Port number of the smtp smarthost
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-smarthost.json\*](cluster/get-smarthost.json "open original schema") |
+
+## port Type
+
+`integer` ([port](get-smarthost-properties-port.md))
+
+## port Constraints
+
+**maximum**: the value of this number must smaller than or equal to: `65535`
+
+**minimum**: the value of this number must greater than or equal to: `1`
diff --git a/core/get-smarthost-properties-tls_verify.md b/core/get-smarthost-properties-tls_verify.md
new file mode 100644
index 000000000..263c2f5b6
--- /dev/null
+++ b/core/get-smarthost-properties-tls_verify.md
@@ -0,0 +1,15 @@
+# tls\_verify Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-smarthost.json#/properties/tls_verify
+```
+
+Enable or disable the usage of a valid certificate
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-smarthost.json\*](cluster/get-smarthost.json "open original schema") |
+
+## tls\_verify Type
+
+`boolean` ([tls\_verify](get-smarthost-properties-tls_verify.md))
diff --git a/core/get-smarthost-properties-username.md b/core/get-smarthost-properties-username.md
new file mode 100644
index 000000000..88ccf2708
--- /dev/null
+++ b/core/get-smarthost-properties-username.md
@@ -0,0 +1,15 @@
+# username Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-smarthost.json#/properties/username
+```
+
+Username to use the smarthost smtp
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-smarthost.json\*](cluster/get-smarthost.json "open original schema") |
+
+## username Type
+
+`string` ([username](get-smarthost-properties-username.md))
diff --git a/core/get-smarthost.json b/core/get-smarthost.json
new file mode 100644
index 000000000..2926b9917
--- /dev/null
+++ b/core/get-smarthost.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"get smarthost settings","description":"Get the settings an external smarthost provider","$id":"http://schema.nethserver.org/cluster/get-smarthost.json","examples":[{"host":"smtp.example.com","port":587,"username":"username","password":"secret","enabled":true,"encrypt_smtp":"starttls","tls_verify":false}],"type":"object","required":["host","port","username","password","enabled","encrypt_smtp","tls_verify"],"properties":{"username":{"type":"string","title":"username","description":"Username to use the smarthost smtp"},"port":{"type":"integer","title":"port","minimum":1,"maximum":65535,"description":"Port number of the smtp smarthost"},"password":{"type":"string","title":"password","description":"Password to use the smarthost"},"host":{"type":"string","title":"host","description":"Host name for the smarthost, like 'wiki.nethserver.org'","format":"idn-hostname"},"enabled":{"type":"boolean","title":"enabled","description":"Enable or disable the smarthost settings"},"encrypt_smtp":{"type":"string","enum":["none","starttls","tls"],"title":"encrypt_smtp","description":"Enable or disable the tls encryption with the smtp server"},"tls_verify":{"type":"boolean","title":"tls_verify","description":"Enable or disable the usage of a valid certificate"}}}
diff --git a/core/get-smarthost.md b/core/get-smarthost.md
new file mode 100644
index 000000000..166dd884c
--- /dev/null
+++ b/core/get-smarthost.md
@@ -0,0 +1,187 @@
+# get smarthost settings Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-smarthost.json
+```
+
+Get the settings an external smarthost provider
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [get-smarthost.json](cluster/get-smarthost.json "open original schema") |
+
+## get smarthost settings Type
+
+`object` ([get smarthost settings](get-smarthost.md))
+
+## get smarthost settings Examples
+
+```json
+{
+ "host": "smtp.example.com",
+ "port": 587,
+ "username": "username",
+ "password": "secret",
+ "enabled": true,
+ "encrypt_smtp": "starttls",
+ "tls_verify": false
+}
+```
+
+# get smarthost settings Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :----------------------------- | :-------- | :------- | :------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [username](#username) | `string` | Required | cannot be null | [get smarthost settings](get-smarthost-properties-username.md "http://schema.nethserver.org/cluster/get-smarthost.json#/properties/username") |
+| [port](#port) | `integer` | Required | cannot be null | [get smarthost settings](get-smarthost-properties-port.md "http://schema.nethserver.org/cluster/get-smarthost.json#/properties/port") |
+| [password](#password) | `string` | Required | cannot be null | [get smarthost settings](get-smarthost-properties-password.md "http://schema.nethserver.org/cluster/get-smarthost.json#/properties/password") |
+| [host](#host) | `string` | Required | cannot be null | [get smarthost settings](get-smarthost-properties-host.md "http://schema.nethserver.org/cluster/get-smarthost.json#/properties/host") |
+| [enabled](#enabled) | `boolean` | Required | cannot be null | [get smarthost settings](get-smarthost-properties-enabled.md "http://schema.nethserver.org/cluster/get-smarthost.json#/properties/enabled") |
+| [encrypt\_smtp](#encrypt_smtp) | `string` | Required | cannot be null | [get smarthost settings](get-smarthost-properties-encrypt_smtp.md "http://schema.nethserver.org/cluster/get-smarthost.json#/properties/encrypt_smtp") |
+| [tls\_verify](#tls_verify) | `boolean` | Required | cannot be null | [get smarthost settings](get-smarthost-properties-tls_verify.md "http://schema.nethserver.org/cluster/get-smarthost.json#/properties/tls_verify") |
+
+## username
+
+Username to use the smarthost smtp
+
+`username`
+
+* is required
+
+* Type: `string` ([username](get-smarthost-properties-username.md))
+
+* cannot be null
+
+* defined in: [get smarthost settings](get-smarthost-properties-username.md "http://schema.nethserver.org/cluster/get-smarthost.json#/properties/username")
+
+### username Type
+
+`string` ([username](get-smarthost-properties-username.md))
+
+## port
+
+Port number of the smtp smarthost
+
+`port`
+
+* is required
+
+* Type: `integer` ([port](get-smarthost-properties-port.md))
+
+* cannot be null
+
+* defined in: [get smarthost settings](get-smarthost-properties-port.md "http://schema.nethserver.org/cluster/get-smarthost.json#/properties/port")
+
+### port Type
+
+`integer` ([port](get-smarthost-properties-port.md))
+
+### port Constraints
+
+**maximum**: the value of this number must smaller than or equal to: `65535`
+
+**minimum**: the value of this number must greater than or equal to: `1`
+
+## password
+
+Password to use the smarthost
+
+`password`
+
+* is required
+
+* Type: `string` ([password](get-smarthost-properties-password.md))
+
+* cannot be null
+
+* defined in: [get smarthost settings](get-smarthost-properties-password.md "http://schema.nethserver.org/cluster/get-smarthost.json#/properties/password")
+
+### password Type
+
+`string` ([password](get-smarthost-properties-password.md))
+
+## host
+
+Host name for the smarthost, like 'wiki.nethserver.org'
+
+`host`
+
+* is required
+
+* Type: `string` ([host](get-smarthost-properties-host.md))
+
+* cannot be null
+
+* defined in: [get smarthost settings](get-smarthost-properties-host.md "http://schema.nethserver.org/cluster/get-smarthost.json#/properties/host")
+
+### host Type
+
+`string` ([host](get-smarthost-properties-host.md))
+
+### host Constraints
+
+**(international) hostname**: the string must be an (IDN) hostname, according to [RFC 5890, section 2.3.2.3](https://tools.ietf.org/html/rfc5890 "check the specification")
+
+## enabled
+
+Enable or disable the smarthost settings
+
+`enabled`
+
+* is required
+
+* Type: `boolean` ([enabled](get-smarthost-properties-enabled.md))
+
+* cannot be null
+
+* defined in: [get smarthost settings](get-smarthost-properties-enabled.md "http://schema.nethserver.org/cluster/get-smarthost.json#/properties/enabled")
+
+### enabled Type
+
+`boolean` ([enabled](get-smarthost-properties-enabled.md))
+
+## encrypt\_smtp
+
+Enable or disable the tls encryption with the smtp server
+
+`encrypt_smtp`
+
+* is required
+
+* Type: `string` ([encrypt\_smtp](get-smarthost-properties-encrypt_smtp.md))
+
+* cannot be null
+
+* defined in: [get smarthost settings](get-smarthost-properties-encrypt_smtp.md "http://schema.nethserver.org/cluster/get-smarthost.json#/properties/encrypt_smtp")
+
+### encrypt\_smtp Type
+
+`string` ([encrypt\_smtp](get-smarthost-properties-encrypt_smtp.md))
+
+### encrypt\_smtp Constraints
+
+**enum**: the value of this property must be equal to one of the following values:
+
+| Value | Explanation |
+| :----------- | :---------- |
+| `"none"` | |
+| `"starttls"` | |
+| `"tls"` | |
+
+## tls\_verify
+
+Enable or disable the usage of a valid certificate
+
+`tls_verify`
+
+* is required
+
+* Type: `boolean` ([tls\_verify](get-smarthost-properties-tls_verify.md))
+
+* cannot be null
+
+* defined in: [get smarthost settings](get-smarthost-properties-tls_verify.md "http://schema.nethserver.org/cluster/get-smarthost.json#/properties/tls_verify")
+
+### tls\_verify Type
+
+`boolean` ([tls\_verify](get-smarthost-properties-tls_verify.md))
diff --git a/core/get-status-input.json b/core/get-status-input.json
new file mode 100644
index 000000000..594f5fb17
--- /dev/null
+++ b/core/get-status-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"get-status input","$id":"http://schema.nethserver.org/agent/get-status-input.json","description":"The action does not accept any input","examples":[null],"type":"null"}
diff --git a/core/get-status-input.md b/core/get-status-input.md
new file mode 100644
index 000000000..874a208a4
--- /dev/null
+++ b/core/get-status-input.md
@@ -0,0 +1,21 @@
+# get-status input Schema
+
+```txt
+http://schema.nethserver.org/agent/get-status-input.json
+```
+
+The action does not accept any input
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-status-input.json](agent/get-status-input.json "open original schema") |
+
+## get-status input Type
+
+`null`, the value must be null ([get-status input](get-status-input.md))
+
+## get-status input Examples
+
+```json
+null
+```
diff --git a/core/get-status-output-properties-images-items-properties-created.md b/core/get-status-output-properties-images-items-properties-created.md
new file mode 100644
index 000000000..9f6125dd8
--- /dev/null
+++ b/core/get-status-output-properties-images-items-properties-created.md
@@ -0,0 +1,15 @@
+# Untitled string in Get module status Schema
+
+```txt
+http://schema.nethserver.org/agent/get-status-output.json#/properties/images/items/properties/created
+```
+
+The image creation date
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-status-output.json\*](agent/get-status-output.json "open original schema") |
+
+## created Type
+
+`string`
diff --git a/core/get-status-output-properties-images-items-properties-name.md b/core/get-status-output-properties-images-items-properties-name.md
new file mode 100644
index 000000000..7678dcf2a
--- /dev/null
+++ b/core/get-status-output-properties-images-items-properties-name.md
@@ -0,0 +1,15 @@
+# Untitled string in Get module status Schema
+
+```txt
+http://schema.nethserver.org/agent/get-status-output.json#/properties/images/items/properties/name
+```
+
+Name of image including repository and tag
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-status-output.json\*](agent/get-status-output.json "open original schema") |
+
+## name Type
+
+`string`
diff --git a/core/get-status-output-properties-images-items-properties-size.md b/core/get-status-output-properties-images-items-properties-size.md
new file mode 100644
index 000000000..573b37106
--- /dev/null
+++ b/core/get-status-output-properties-images-items-properties-size.md
@@ -0,0 +1,15 @@
+# Untitled string in Get module status Schema
+
+```txt
+http://schema.nethserver.org/agent/get-status-output.json#/properties/images/items/properties/size
+```
+
+The image size in human-readable format
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-status-output.json\*](agent/get-status-output.json "open original schema") |
+
+## size Type
+
+`string`
diff --git a/core/get-status-output-properties-images-items.md b/core/get-status-output-properties-images-items.md
new file mode 100644
index 000000000..a240a9d6a
--- /dev/null
+++ b/core/get-status-output-properties-images-items.md
@@ -0,0 +1,77 @@
+# Untitled object in Get module status Schema
+
+```txt
+http://schema.nethserver.org/agent/get-status-output.json#/properties/images/items
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [get-status-output.json\*](agent/get-status-output.json "open original schema") |
+
+## items Type
+
+`object` ([Details](get-status-output-properties-images-items.md))
+
+# items Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------ | :------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [name](#name) | `string` | Optional | cannot be null | [Get module status](get-status-output-properties-images-items-properties-name.md "http://schema.nethserver.org/agent/get-status-output.json#/properties/images/items/properties/name") |
+| [size](#size) | `string` | Optional | cannot be null | [Get module status](get-status-output-properties-images-items-properties-size.md "http://schema.nethserver.org/agent/get-status-output.json#/properties/images/items/properties/size") |
+| [created](#created) | `string` | Optional | cannot be null | [Get module status](get-status-output-properties-images-items-properties-created.md "http://schema.nethserver.org/agent/get-status-output.json#/properties/images/items/properties/created") |
+
+## name
+
+Name of image including repository and tag
+
+`name`
+
+* is optional
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [Get module status](get-status-output-properties-images-items-properties-name.md "http://schema.nethserver.org/agent/get-status-output.json#/properties/images/items/properties/name")
+
+### name Type
+
+`string`
+
+## size
+
+The image size in human-readable format
+
+`size`
+
+* is optional
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [Get module status](get-status-output-properties-images-items-properties-size.md "http://schema.nethserver.org/agent/get-status-output.json#/properties/images/items/properties/size")
+
+### size Type
+
+`string`
+
+## created
+
+The image creation date
+
+`created`
+
+* is optional
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [Get module status](get-status-output-properties-images-items-properties-created.md "http://schema.nethserver.org/agent/get-status-output.json#/properties/images/items/properties/created")
+
+### created Type
+
+`string`
diff --git a/core/get-status-output-properties-images.md b/core/get-status-output-properties-images.md
new file mode 100644
index 000000000..9459c1e3c
--- /dev/null
+++ b/core/get-status-output-properties-images.md
@@ -0,0 +1,15 @@
+# Untitled array in Get module status Schema
+
+```txt
+http://schema.nethserver.org/agent/get-status-output.json#/properties/images
+```
+
+A list of podman images
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-status-output.json\*](agent/get-status-output.json "open original schema") |
+
+## images Type
+
+`object[]` ([Details](get-status-output-properties-images-items.md))
diff --git a/core/get-status-output-properties-instance.md b/core/get-status-output-properties-instance.md
new file mode 100644
index 000000000..2abd08a79
--- /dev/null
+++ b/core/get-status-output-properties-instance.md
@@ -0,0 +1,15 @@
+# Untitled string in Get module status Schema
+
+```txt
+http://schema.nethserver.org/agent/get-status-output.json#/properties/instance
+```
+
+Instance identifier
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-status-output.json\*](agent/get-status-output.json "open original schema") |
+
+## instance Type
+
+`string`
diff --git a/core/get-status-output-properties-node.md b/core/get-status-output-properties-node.md
new file mode 100644
index 000000000..850c3bb3b
--- /dev/null
+++ b/core/get-status-output-properties-node.md
@@ -0,0 +1,15 @@
+# Untitled string in Get module status Schema
+
+```txt
+http://schema.nethserver.org/agent/get-status-output.json#/properties/node
+```
+
+Id of the node where the instance is running
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-status-output.json\*](agent/get-status-output.json "open original schema") |
+
+## node Type
+
+`string`
diff --git a/core/get-status-output-properties-node_ui_name.md b/core/get-status-output-properties-node_ui_name.md
new file mode 100644
index 000000000..38d908d24
--- /dev/null
+++ b/core/get-status-output-properties-node_ui_name.md
@@ -0,0 +1,15 @@
+# Untitled string in Get module status Schema
+
+```txt
+http://schema.nethserver.org/agent/get-status-output.json#/properties/node_ui_name
+```
+
+UI name of the node
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-status-output.json\*](agent/get-status-output.json "open original schema") |
+
+## node\_ui\_name Type
+
+`string`
diff --git a/core/get-status-output-properties-services-items-properties-active.md b/core/get-status-output-properties-services-items-properties-active.md
new file mode 100644
index 000000000..f80bcf480
--- /dev/null
+++ b/core/get-status-output-properties-services-items-properties-active.md
@@ -0,0 +1,15 @@
+# Untitled boolean in Get module status Schema
+
+```txt
+http://schema.nethserver.org/agent/get-status-output.json#/properties/services/items/properties/active
+```
+
+true if unit is running, false otherwise
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-status-output.json\*](agent/get-status-output.json "open original schema") |
+
+## active Type
+
+`boolean`
diff --git a/core/get-status-output-properties-services-items-properties-enabled.md b/core/get-status-output-properties-services-items-properties-enabled.md
new file mode 100644
index 000000000..3284b3704
--- /dev/null
+++ b/core/get-status-output-properties-services-items-properties-enabled.md
@@ -0,0 +1,15 @@
+# Untitled boolean in Get module status Schema
+
+```txt
+http://schema.nethserver.org/agent/get-status-output.json#/properties/services/items/properties/enabled
+```
+
+true if unit is enabled at startup, false otherwise
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-status-output.json\*](agent/get-status-output.json "open original schema") |
+
+## enabled Type
+
+`boolean`
diff --git a/core/get-status-output-properties-services-items-properties-failed.md b/core/get-status-output-properties-services-items-properties-failed.md
new file mode 100644
index 000000000..344a9f529
--- /dev/null
+++ b/core/get-status-output-properties-services-items-properties-failed.md
@@ -0,0 +1,15 @@
+# Untitled boolean in Get module status Schema
+
+```txt
+http://schema.nethserver.org/agent/get-status-output.json#/properties/services/items/properties/failed
+```
+
+true if unit is in failed state, false otherwise
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-status-output.json\*](agent/get-status-output.json "open original schema") |
+
+## failed Type
+
+`boolean`
diff --git a/core/get-status-output-properties-services-items-properties-name.md b/core/get-status-output-properties-services-items-properties-name.md
new file mode 100644
index 000000000..4f684fef1
--- /dev/null
+++ b/core/get-status-output-properties-services-items-properties-name.md
@@ -0,0 +1,15 @@
+# Untitled string in Get module status Schema
+
+```txt
+http://schema.nethserver.org/agent/get-status-output.json#/properties/services/items/properties/name
+```
+
+Name of systemd unit
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-status-output.json\*](agent/get-status-output.json "open original schema") |
+
+## name Type
+
+`string`
diff --git a/core/get-status-output-properties-services-items.md b/core/get-status-output-properties-services-items.md
new file mode 100644
index 000000000..6485c3076
--- /dev/null
+++ b/core/get-status-output-properties-services-items.md
@@ -0,0 +1,96 @@
+# Untitled object in Get module status Schema
+
+```txt
+http://schema.nethserver.org/agent/get-status-output.json#/properties/services/items
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [get-status-output.json\*](agent/get-status-output.json "open original schema") |
+
+## items Type
+
+`object` ([Details](get-status-output-properties-services-items.md))
+
+# items Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------ | :-------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [name](#name) | `string` | Optional | cannot be null | [Get module status](get-status-output-properties-services-items-properties-name.md "http://schema.nethserver.org/agent/get-status-output.json#/properties/services/items/properties/name") |
+| [active](#active) | `boolean` | Optional | cannot be null | [Get module status](get-status-output-properties-services-items-properties-active.md "http://schema.nethserver.org/agent/get-status-output.json#/properties/services/items/properties/active") |
+| [enabled](#enabled) | `boolean` | Optional | cannot be null | [Get module status](get-status-output-properties-services-items-properties-enabled.md "http://schema.nethserver.org/agent/get-status-output.json#/properties/services/items/properties/enabled") |
+| [failed](#failed) | `boolean` | Optional | cannot be null | [Get module status](get-status-output-properties-services-items-properties-failed.md "http://schema.nethserver.org/agent/get-status-output.json#/properties/services/items/properties/failed") |
+
+## name
+
+Name of systemd unit
+
+`name`
+
+* is optional
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [Get module status](get-status-output-properties-services-items-properties-name.md "http://schema.nethserver.org/agent/get-status-output.json#/properties/services/items/properties/name")
+
+### name Type
+
+`string`
+
+## active
+
+true if unit is running, false otherwise
+
+`active`
+
+* is optional
+
+* Type: `boolean`
+
+* cannot be null
+
+* defined in: [Get module status](get-status-output-properties-services-items-properties-active.md "http://schema.nethserver.org/agent/get-status-output.json#/properties/services/items/properties/active")
+
+### active Type
+
+`boolean`
+
+## enabled
+
+true if unit is enabled at startup, false otherwise
+
+`enabled`
+
+* is optional
+
+* Type: `boolean`
+
+* cannot be null
+
+* defined in: [Get module status](get-status-output-properties-services-items-properties-enabled.md "http://schema.nethserver.org/agent/get-status-output.json#/properties/services/items/properties/enabled")
+
+### enabled Type
+
+`boolean`
+
+## failed
+
+true if unit is in failed state, false otherwise
+
+`failed`
+
+* is optional
+
+* Type: `boolean`
+
+* cannot be null
+
+* defined in: [Get module status](get-status-output-properties-services-items-properties-failed.md "http://schema.nethserver.org/agent/get-status-output.json#/properties/services/items/properties/failed")
+
+### failed Type
+
+`boolean`
diff --git a/core/get-status-output-properties-services.md b/core/get-status-output-properties-services.md
new file mode 100644
index 000000000..64ac750da
--- /dev/null
+++ b/core/get-status-output-properties-services.md
@@ -0,0 +1,15 @@
+# Untitled array in Get module status Schema
+
+```txt
+http://schema.nethserver.org/agent/get-status-output.json#/properties/services
+```
+
+A list of systemd unit services
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-status-output.json\*](agent/get-status-output.json "open original schema") |
+
+## services Type
+
+`object[]` ([Details](get-status-output-properties-services-items.md))
diff --git a/core/get-status-output-properties-ui_name.md b/core/get-status-output-properties-ui_name.md
new file mode 100644
index 000000000..e910d843a
--- /dev/null
+++ b/core/get-status-output-properties-ui_name.md
@@ -0,0 +1,15 @@
+# Untitled string in Get module status Schema
+
+```txt
+http://schema.nethserver.org/agent/get-status-output.json#/properties/ui_name
+```
+
+UI name of the module instance
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-status-output.json\*](agent/get-status-output.json "open original schema") |
+
+## ui\_name Type
+
+`string`
diff --git a/core/get-status-output-properties-volumes-items-properties-created.md b/core/get-status-output-properties-volumes-items-properties-created.md
new file mode 100644
index 000000000..c64f25fe2
--- /dev/null
+++ b/core/get-status-output-properties-volumes-items-properties-created.md
@@ -0,0 +1,15 @@
+# Untitled string in Get module status Schema
+
+```txt
+http://schema.nethserver.org/agent/get-status-output.json#/properties/volumes/items/properties/created
+```
+
+The volume creation date
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-status-output.json\*](agent/get-status-output.json "open original schema") |
+
+## created Type
+
+`string`
diff --git a/core/get-status-output-properties-volumes-items-properties-mount.md b/core/get-status-output-properties-volumes-items-properties-mount.md
new file mode 100644
index 000000000..98b0e16df
--- /dev/null
+++ b/core/get-status-output-properties-volumes-items-properties-mount.md
@@ -0,0 +1,15 @@
+# Untitled string in Get module status Schema
+
+```txt
+http://schema.nethserver.org/agent/get-status-output.json#/properties/volumes/items/properties/mount
+```
+
+Mount point of the volume
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-status-output.json\*](agent/get-status-output.json "open original schema") |
+
+## mount Type
+
+`string`
diff --git a/core/get-status-output-properties-volumes-items-properties-name.md b/core/get-status-output-properties-volumes-items-properties-name.md
new file mode 100644
index 000000000..8a0d581a5
--- /dev/null
+++ b/core/get-status-output-properties-volumes-items-properties-name.md
@@ -0,0 +1,15 @@
+# Untitled string in Get module status Schema
+
+```txt
+http://schema.nethserver.org/agent/get-status-output.json#/properties/volumes/items/properties/name
+```
+
+Name of volume
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-status-output.json\*](agent/get-status-output.json "open original schema") |
+
+## name Type
+
+`string`
diff --git a/core/get-status-output-properties-volumes-items.md b/core/get-status-output-properties-volumes-items.md
new file mode 100644
index 000000000..63fa3e388
--- /dev/null
+++ b/core/get-status-output-properties-volumes-items.md
@@ -0,0 +1,77 @@
+# Untitled object in Get module status Schema
+
+```txt
+http://schema.nethserver.org/agent/get-status-output.json#/properties/volumes/items
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [get-status-output.json\*](agent/get-status-output.json "open original schema") |
+
+## items Type
+
+`object` ([Details](get-status-output-properties-volumes-items.md))
+
+# items Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------ | :------- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [name](#name) | `string` | Optional | cannot be null | [Get module status](get-status-output-properties-volumes-items-properties-name.md "http://schema.nethserver.org/agent/get-status-output.json#/properties/volumes/items/properties/name") |
+| [mount](#mount) | `string` | Optional | cannot be null | [Get module status](get-status-output-properties-volumes-items-properties-mount.md "http://schema.nethserver.org/agent/get-status-output.json#/properties/volumes/items/properties/mount") |
+| [created](#created) | `string` | Optional | cannot be null | [Get module status](get-status-output-properties-volumes-items-properties-created.md "http://schema.nethserver.org/agent/get-status-output.json#/properties/volumes/items/properties/created") |
+
+## name
+
+Name of volume
+
+`name`
+
+* is optional
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [Get module status](get-status-output-properties-volumes-items-properties-name.md "http://schema.nethserver.org/agent/get-status-output.json#/properties/volumes/items/properties/name")
+
+### name Type
+
+`string`
+
+## mount
+
+Mount point of the volume
+
+`mount`
+
+* is optional
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [Get module status](get-status-output-properties-volumes-items-properties-mount.md "http://schema.nethserver.org/agent/get-status-output.json#/properties/volumes/items/properties/mount")
+
+### mount Type
+
+`string`
+
+## created
+
+The volume creation date
+
+`created`
+
+* is optional
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [Get module status](get-status-output-properties-volumes-items-properties-created.md "http://schema.nethserver.org/agent/get-status-output.json#/properties/volumes/items/properties/created")
+
+### created Type
+
+`string`
diff --git a/core/get-status-output-properties-volumes.md b/core/get-status-output-properties-volumes.md
new file mode 100644
index 000000000..0006775a9
--- /dev/null
+++ b/core/get-status-output-properties-volumes.md
@@ -0,0 +1,15 @@
+# Untitled array in Get module status Schema
+
+```txt
+http://schema.nethserver.org/agent/get-status-output.json#/properties/volumes
+```
+
+A list of podman volumes
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-status-output.json\*](agent/get-status-output.json "open original schema") |
+
+## volumes Type
+
+`object[]` ([Details](get-status-output-properties-volumes-items.md))
diff --git a/core/get-status-output.json b/core/get-status-output.json
new file mode 100644
index 000000000..5de276fd7
--- /dev/null
+++ b/core/get-status-output.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"Get module status","$id":"http://schema.nethserver.org/agent/get-status-output.json","description":"Get module instance running status","examples":[{"instance":"dokuwiki1","ui_name":"mywiki","node":"1","node_ui_name":"andromeda","services":[{"name":"dokuwiki","active":true,"enabled":true,"failed":false}],"images":[{"name":"docker.io/bitnami/dokuwiki:20200729.0.0-debian-10-r299","created":"2021-07-12 10:15:52 +0000 UTC","size":"402 MB"}],"volumes":[{"name":"dokuwiki-data","mount":"/home/dokuwiki1/.local/share/containers/storage/volumes/dokuwiki-data/_data","created":"2021-07-19 10:19:45.528366456 +0200 CEST"}]}],"type":"object","required":["instance","ui_name","node","node_ui_name","services","images","volumes"],"properties":{"instance":{"type":"string","description":"Instance identifier"},"ui_name":{"type":"string","description":"UI name of the module instance"},"node":{"type":"string","description":"Id of the node where the instance is running"},"node_ui_name":{"type":"string","description":"UI name of the node"},"services":{"type":"array","description":"A list of systemd unit services","items":{"type":"object","properties":{"name":{"type":"string","description":"Name of systemd unit"},"active":{"type":"boolean","description":"true if unit is running, false otherwise"},"enabled":{"type":"boolean","description":"true if unit is enabled at startup, false otherwise"},"failed":{"type":"boolean","description":"true if unit is in failed state, false otherwise"}}}},"images":{"type":"array","description":"A list of podman images","items":{"type":"object","properties":{"name":{"type":"string","description":"Name of image including repository and tag"},"size":{"type":"string","description":"The image size in human-readable format"},"created":{"type":"string","description":"The image creation date"}}}},"volumes":{"type":"array","description":"A list of podman volumes","items":{"type":"object","properties":{"name":{"type":"string","description":"Name of volume"},"mount":{"type":"string","description":"Mount point of the volume"},"created":{"type":"string","description":"The volume creation date"}}}}}}
diff --git a/core/get-status-output.md b/core/get-status-output.md
new file mode 100644
index 000000000..2d5f00c89
--- /dev/null
+++ b/core/get-status-output.md
@@ -0,0 +1,186 @@
+# Get module status Schema
+
+```txt
+http://schema.nethserver.org/agent/get-status-output.json
+```
+
+Get module instance running status
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [get-status-output.json](agent/get-status-output.json "open original schema") |
+
+## Get module status Type
+
+`object` ([Get module status](get-status-output.md))
+
+## Get module status Examples
+
+```json
+{
+ "instance": "dokuwiki1",
+ "ui_name": "mywiki",
+ "node": "1",
+ "node_ui_name": "andromeda",
+ "services": [
+ {
+ "name": "dokuwiki",
+ "active": true,
+ "enabled": true,
+ "failed": false
+ }
+ ],
+ "images": [
+ {
+ "name": "docker.io/bitnami/dokuwiki:20200729.0.0-debian-10-r299",
+ "created": "2021-07-12 10:15:52 +0000 UTC",
+ "size": "402 MB"
+ }
+ ],
+ "volumes": [
+ {
+ "name": "dokuwiki-data",
+ "mount": "/home/dokuwiki1/.local/share/containers/storage/volumes/dokuwiki-data/_data",
+ "created": "2021-07-19 10:19:45.528366456 +0200 CEST"
+ }
+ ]
+}
+```
+
+# Get module status Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------------ | :------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [instance](#instance) | `string` | Required | cannot be null | [Get module status](get-status-output-properties-instance.md "http://schema.nethserver.org/agent/get-status-output.json#/properties/instance") |
+| [ui\_name](#ui_name) | `string` | Required | cannot be null | [Get module status](get-status-output-properties-ui_name.md "http://schema.nethserver.org/agent/get-status-output.json#/properties/ui_name") |
+| [node](#node) | `string` | Required | cannot be null | [Get module status](get-status-output-properties-node.md "http://schema.nethserver.org/agent/get-status-output.json#/properties/node") |
+| [node\_ui\_name](#node_ui_name) | `string` | Required | cannot be null | [Get module status](get-status-output-properties-node_ui_name.md "http://schema.nethserver.org/agent/get-status-output.json#/properties/node_ui_name") |
+| [services](#services) | `array` | Required | cannot be null | [Get module status](get-status-output-properties-services.md "http://schema.nethserver.org/agent/get-status-output.json#/properties/services") |
+| [images](#images) | `array` | Required | cannot be null | [Get module status](get-status-output-properties-images.md "http://schema.nethserver.org/agent/get-status-output.json#/properties/images") |
+| [volumes](#volumes) | `array` | Required | cannot be null | [Get module status](get-status-output-properties-volumes.md "http://schema.nethserver.org/agent/get-status-output.json#/properties/volumes") |
+
+## instance
+
+Instance identifier
+
+`instance`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [Get module status](get-status-output-properties-instance.md "http://schema.nethserver.org/agent/get-status-output.json#/properties/instance")
+
+### instance Type
+
+`string`
+
+## ui\_name
+
+UI name of the module instance
+
+`ui_name`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [Get module status](get-status-output-properties-ui_name.md "http://schema.nethserver.org/agent/get-status-output.json#/properties/ui_name")
+
+### ui\_name Type
+
+`string`
+
+## node
+
+Id of the node where the instance is running
+
+`node`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [Get module status](get-status-output-properties-node.md "http://schema.nethserver.org/agent/get-status-output.json#/properties/node")
+
+### node Type
+
+`string`
+
+## node\_ui\_name
+
+UI name of the node
+
+`node_ui_name`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [Get module status](get-status-output-properties-node_ui_name.md "http://schema.nethserver.org/agent/get-status-output.json#/properties/node_ui_name")
+
+### node\_ui\_name Type
+
+`string`
+
+## services
+
+A list of systemd unit services
+
+`services`
+
+* is required
+
+* Type: `object[]` ([Details](get-status-output-properties-services-items.md))
+
+* cannot be null
+
+* defined in: [Get module status](get-status-output-properties-services.md "http://schema.nethserver.org/agent/get-status-output.json#/properties/services")
+
+### services Type
+
+`object[]` ([Details](get-status-output-properties-services-items.md))
+
+## images
+
+A list of podman images
+
+`images`
+
+* is required
+
+* Type: `object[]` ([Details](get-status-output-properties-images-items.md))
+
+* cannot be null
+
+* defined in: [Get module status](get-status-output-properties-images.md "http://schema.nethserver.org/agent/get-status-output.json#/properties/images")
+
+### images Type
+
+`object[]` ([Details](get-status-output-properties-images-items.md))
+
+## volumes
+
+A list of podman volumes
+
+`volumes`
+
+* is required
+
+* Type: `object[]` ([Details](get-status-output-properties-volumes-items.md))
+
+* cannot be null
+
+* defined in: [Get module status](get-status-output-properties-volumes.md "http://schema.nethserver.org/agent/get-status-output.json#/properties/volumes")
+
+### volumes Type
+
+`object[]` ([Details](get-status-output-properties-volumes-items.md))
diff --git a/core/get-subscription-properties-subscription.md b/core/get-subscription-properties-subscription.md
new file mode 100644
index 000000000..352e60d45
--- /dev/null
+++ b/core/get-subscription-properties-subscription.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in get-subscription Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-subscription.json#/properties/subscription
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-subscription.json\*](cluster/get-subscription.json "open original schema") |
+
+## subscription Type
+
+`object` ([Details](get-subscription-properties-subscription.md))
diff --git a/core/get-subscription-properties.md b/core/get-subscription-properties.md
new file mode 100644
index 000000000..598fbdbbe
--- /dev/null
+++ b/core/get-subscription-properties.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in get-subscription Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-subscription.json#/properties
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-subscription.json\*](cluster/get-subscription.json "open original schema") |
+
+## properties Type
+
+unknown
diff --git a/core/get-subscription.json b/core/get-subscription.json
new file mode 100644
index 000000000..cc640705d
--- /dev/null
+++ b/core/get-subscription.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"get-subscription","description":"Get support subscription attributes","$id":"http://schema.nethserver.org/cluster/get-subscription.json","examples":[],"type":["object"],"required":["subscription"],"properties":{"subscription":{"type":["object","null"]}}}
diff --git a/core/get-subscription.md b/core/get-subscription.md
new file mode 100644
index 000000000..b5dbc8976
--- /dev/null
+++ b/core/get-subscription.md
@@ -0,0 +1,39 @@
+# get-subscription Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-subscription.json
+```
+
+Get support subscription attributes
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [get-subscription.json](cluster/get-subscription.json "open original schema") |
+
+## get-subscription Type
+
+`object` ([get-subscription](get-subscription.md))
+
+# get-subscription Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :---------------------------- | :------- | :------- | :---------- | :---------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [subscription](#subscription) | `object` | Required | can be null | [get-subscription](get-subscription-properties-subscription.md "http://schema.nethserver.org/cluster/get-subscription.json#/properties/subscription") |
+
+## subscription
+
+
+
+`subscription`
+
+* is required
+
+* Type: `object` ([Details](get-subscription-properties-subscription.md))
+
+* can be null
+
+* defined in: [get-subscription](get-subscription-properties-subscription.md "http://schema.nethserver.org/cluster/get-subscription.json#/properties/subscription")
+
+### subscription Type
+
+`object` ([Details](get-subscription-properties-subscription.md))
diff --git a/core/get-support-session-output-properties-active.md b/core/get-support-session-output-properties-active.md
new file mode 100644
index 000000000..8ce1539ea
--- /dev/null
+++ b/core/get-support-session-output-properties-active.md
@@ -0,0 +1,15 @@
+# Untitled boolean in get-support-session output Schema
+
+```txt
+http://schema.nethserver.org/node/get-support-session-output.json#/properties/active
+```
+
+If the opened session is still active or not
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :----------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-support-session-output.json\*](node/get-support-session-output.json "open original schema") |
+
+## active Type
+
+`boolean`
diff --git a/core/get-support-session-output-properties-session_id.md b/core/get-support-session-output-properties-session_id.md
new file mode 100644
index 000000000..14807088c
--- /dev/null
+++ b/core/get-support-session-output-properties-session_id.md
@@ -0,0 +1,15 @@
+# Untitled string in get-support-session output Schema
+
+```txt
+http://schema.nethserver.org/node/get-support-session-output.json#/properties/session_id
+```
+
+Last opened session identifier for the support team
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :----------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-support-session-output.json\*](node/get-support-session-output.json "open original schema") |
+
+## session\_id Type
+
+`string`
diff --git a/core/get-support-session-output.json b/core/get-support-session-output.json
new file mode 100644
index 000000000..693a3b690
--- /dev/null
+++ b/core/get-support-session-output.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"get-support-session output","$id":"http://schema.nethserver.org/node/get-support-session-output.json","description":"Return the support session status","examples":[{"session_id":"811630de-67f4-5b6d-8b2f-7cc01f592b1b","active":true},{"session_id":"811630de-67f4-5b6d-8b2f-7cc01f592b1b","active":false}],"type":"object","required":["session_id","active"],"properties":{"session_id":{"type":"string","description":"Last opened session identifier for the support team"},"active":{"type":"boolean","description":"If the opened session is still active or not"}}}
diff --git a/core/get-support-session-output.md b/core/get-support-session-output.md
new file mode 100644
index 000000000..3510107ca
--- /dev/null
+++ b/core/get-support-session-output.md
@@ -0,0 +1,74 @@
+# get-support-session output Schema
+
+```txt
+http://schema.nethserver.org/node/get-support-session-output.json
+```
+
+Return the support session status
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [get-support-session-output.json](node/get-support-session-output.json "open original schema") |
+
+## get-support-session output Type
+
+`object` ([get-support-session output](get-support-session-output.md))
+
+## get-support-session output Examples
+
+```json
+{
+ "session_id": "811630de-67f4-5b6d-8b2f-7cc01f592b1b",
+ "active": true
+}
+```
+
+```json
+{
+ "session_id": "811630de-67f4-5b6d-8b2f-7cc01f592b1b",
+ "active": false
+}
+```
+
+# get-support-session output Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------- | :-------- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [session\_id](#session_id) | `string` | Required | cannot be null | [get-support-session output](get-support-session-output-properties-session_id.md "http://schema.nethserver.org/node/get-support-session-output.json#/properties/session_id") |
+| [active](#active) | `boolean` | Required | cannot be null | [get-support-session output](get-support-session-output-properties-active.md "http://schema.nethserver.org/node/get-support-session-output.json#/properties/active") |
+
+## session\_id
+
+Last opened session identifier for the support team
+
+`session_id`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [get-support-session output](get-support-session-output-properties-session_id.md "http://schema.nethserver.org/node/get-support-session-output.json#/properties/session_id")
+
+### session\_id Type
+
+`string`
+
+## active
+
+If the opened session is still active or not
+
+`active`
+
+* is required
+
+* Type: `boolean`
+
+* cannot be null
+
+* defined in: [get-support-session output](get-support-session-output-properties-active.md "http://schema.nethserver.org/node/get-support-session-output.json#/properties/active")
+
+### active Type
+
+`boolean`
diff --git a/core/get-user-info-input-properties-user.md b/core/get-user-info-input-properties-user.md
new file mode 100644
index 000000000..4bcfc7f87
--- /dev/null
+++ b/core/get-user-info-input-properties-user.md
@@ -0,0 +1,15 @@
+# Untitled string in get-user-info input Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-user-info-input.json#/properties/user
+```
+
+Target user.
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-user-info-input.json\*](cluster/get-user-info-input.json "open original schema") |
+
+## user Type
+
+`string`
diff --git a/core/get-user-info-input.json b/core/get-user-info-input.json
new file mode 100644
index 000000000..6b1c84eba
--- /dev/null
+++ b/core/get-user-info-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"get-user-info input","$id":"http://schema.nethserver.org/cluster/get-user-info-input.json","description":"Input schema of the get-user-info action","examples":[{"user":"admin"}],"type":"object","properties":{"user":{"description":"Target user.","type":"string"}},"required":["user"]}
diff --git a/core/get-user-info-input.md b/core/get-user-info-input.md
new file mode 100644
index 000000000..725205c8e
--- /dev/null
+++ b/core/get-user-info-input.md
@@ -0,0 +1,47 @@
+# get-user-info input Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-user-info-input.json
+```
+
+Input schema of the get-user-info action
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [get-user-info-input.json](cluster/get-user-info-input.json "open original schema") |
+
+## get-user-info input Type
+
+`object` ([get-user-info input](get-user-info-input.md))
+
+## get-user-info input Examples
+
+```json
+{
+ "user": "admin"
+}
+```
+
+# get-user-info input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------ | :------- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------- |
+| [user](#user) | `string` | Required | cannot be null | [get-user-info input](get-user-info-input-properties-user.md "http://schema.nethserver.org/cluster/get-user-info-input.json#/properties/user") |
+
+## user
+
+Target user.
+
+`user`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [get-user-info input](get-user-info-input-properties-user.md "http://schema.nethserver.org/cluster/get-user-info-input.json#/properties/user")
+
+### user Type
+
+`string`
diff --git a/core/get-user-info-output-properties-display_name.md b/core/get-user-info-output-properties-display_name.md
new file mode 100644
index 000000000..52cc4e366
--- /dev/null
+++ b/core/get-user-info-output-properties-display_name.md
@@ -0,0 +1,15 @@
+# Untitled string in get-user-info output Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-user-info-output.json#/properties/display_name
+```
+
+Display name of the user
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-user-info-output.json\*](cluster/get-user-info-output.json "open original schema") |
+
+## display\_name Type
+
+`string`
diff --git a/core/get-user-info-output-properties-email.md b/core/get-user-info-output-properties-email.md
new file mode 100644
index 000000000..f35fa9c65
--- /dev/null
+++ b/core/get-user-info-output-properties-email.md
@@ -0,0 +1,15 @@
+# Untitled string in get-user-info output Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-user-info-output.json#/properties/email
+```
+
+Email of the user
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [get-user-info-output.json\*](cluster/get-user-info-output.json "open original schema") |
+
+## email Type
+
+`string`
diff --git a/core/get-user-info-output.json b/core/get-user-info-output.json
new file mode 100644
index 000000000..e68f4dc98
--- /dev/null
+++ b/core/get-user-info-output.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"get-user-info output","description":"Output schema of the get-user-info action","$id":"http://schema.nethserver.org/cluster/get-user-info-output.json","examples":[{"display_name":"Admin","email":""}],"type":"object","properties":{"display_name":{"description":"Display name of the user","type":"string"},"email":{"description":"Email of the user","type":"string"}},"required":["display_name","email"]}
diff --git a/core/get-user-info-output.md b/core/get-user-info-output.md
new file mode 100644
index 000000000..367873557
--- /dev/null
+++ b/core/get-user-info-output.md
@@ -0,0 +1,67 @@
+# get-user-info output Schema
+
+```txt
+http://schema.nethserver.org/cluster/get-user-info-output.json
+```
+
+Output schema of the get-user-info action
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [get-user-info-output.json](cluster/get-user-info-output.json "open original schema") |
+
+## get-user-info output Type
+
+`object` ([get-user-info output](get-user-info-output.md))
+
+## get-user-info output Examples
+
+```json
+{
+ "display_name": "Admin",
+ "email": ""
+}
+```
+
+# get-user-info output Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :----------------------------- | :------- | :------- | :------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [display\_name](#display_name) | `string` | Required | cannot be null | [get-user-info output](get-user-info-output-properties-display_name.md "http://schema.nethserver.org/cluster/get-user-info-output.json#/properties/display_name") |
+| [email](#email) | `string` | Required | cannot be null | [get-user-info output](get-user-info-output-properties-email.md "http://schema.nethserver.org/cluster/get-user-info-output.json#/properties/email") |
+
+## display\_name
+
+Display name of the user
+
+`display_name`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [get-user-info output](get-user-info-output-properties-display_name.md "http://schema.nethserver.org/cluster/get-user-info-output.json#/properties/display_name")
+
+### display\_name Type
+
+`string`
+
+## email
+
+Email of the user
+
+`email`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [get-user-info output](get-user-info-output-properties-email.md "http://schema.nethserver.org/cluster/get-user-info-output.json#/properties/email")
+
+### email Type
+
+`string`
diff --git a/core/grant-actions-input.json b/core/grant-actions-input.json
new file mode 100644
index 000000000..45325044c
--- /dev/null
+++ b/core/grant-actions-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"grant-actions input","$id":"http://schema.nethserver.org/cluster/grant-actions-input.json","description":"Set permissions with a list of grant assertions","examples":[[{"action":"*","to":"owner","on":"cluster"},{"action":"list-*","to":"*","on":"cluster"}]],"type":"array","items":{"$ref":"http://schema.nethserver.org/cluster.json#/definitions/grant-assertion"}}
diff --git a/core/grant-actions-input.md b/core/grant-actions-input.md
new file mode 100644
index 000000000..73b8e6959
--- /dev/null
+++ b/core/grant-actions-input.md
@@ -0,0 +1,32 @@
+# grant-actions input Schema
+
+```txt
+http://schema.nethserver.org/cluster/grant-actions-input.json
+```
+
+Set permissions with a list of grant assertions
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [grant-actions-input.json](cluster/grant-actions-input.json "open original schema") |
+
+## grant-actions input Type
+
+`object[]` ([Details](cluster-definitions-grant-assertion.md))
+
+## grant-actions input Examples
+
+```json
+[
+ {
+ "action": "*",
+ "to": "owner",
+ "on": "cluster"
+ },
+ {
+ "action": "list-*",
+ "to": "*",
+ "on": "cluster"
+ }
+]
+```
diff --git a/core/grant-actions-output.json b/core/grant-actions-output.json
new file mode 100644
index 000000000..4cd5a2e8d
--- /dev/null
+++ b/core/grant-actions-output.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"grant-actions output","$id":"http://schema.nethserver.org/cluster/grant-actions-output.json","description":"Just an empty object, representing a successful response","examples":[{}],"type":"object","properties":{}}
diff --git a/core/grant-actions-output.md b/core/grant-actions-output.md
new file mode 100644
index 000000000..6f493a712
--- /dev/null
+++ b/core/grant-actions-output.md
@@ -0,0 +1,26 @@
+# grant-actions output Schema
+
+```txt
+http://schema.nethserver.org/cluster/grant-actions-output.json
+```
+
+Just an empty object, representing a successful response
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [grant-actions-output.json](cluster/grant-actions-output.json "open original schema") |
+
+## grant-actions output Type
+
+`object` ([grant-actions output](grant-actions-output.md))
+
+## grant-actions output Examples
+
+```json
+{}
+```
+
+# grant-actions output Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------- | :--- | :------- | :------- | :--------- |
diff --git a/core/import-module-input-1-properties-initial-volume-set-where-the-module-state-is-stored-name-of-the-volume-element.md b/core/import-module-input-1-properties-initial-volume-set-where-the-module-state-is-stored-name-of-the-volume-element.md
new file mode 100644
index 000000000..9d537451c
--- /dev/null
+++ b/core/import-module-input-1-properties-initial-volume-set-where-the-module-state-is-stored-name-of-the-volume-element.md
@@ -0,0 +1,15 @@
+# Name of the volume element Schema
+
+```txt
+http://schema.nethserver.org/cluster/import-module-input.json#/properties/volumes/items
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [import-module-input.json\*](cluster/import-module-input.json "open original schema") |
+
+## items Type
+
+`string` ([Name of the volume element](import-module-input-1-properties-initial-volume-set-where-the-module-state-is-stored-name-of-the-volume-element.md))
diff --git a/core/import-module-input-1-properties-initial-volume-set-where-the-module-state-is-stored.md b/core/import-module-input-1-properties-initial-volume-set-where-the-module-state-is-stored.md
new file mode 100644
index 000000000..f74d03e26
--- /dev/null
+++ b/core/import-module-input-1-properties-initial-volume-set-where-the-module-state-is-stored.md
@@ -0,0 +1,15 @@
+# Initial volume set where the module state is stored Schema
+
+```txt
+http://schema.nethserver.org/cluster/import-module-input.json#/properties/volumes
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [import-module-input.json\*](cluster/import-module-input.json "open original schema") |
+
+## volumes Type
+
+`string[]` ([Name of the volume element](import-module-input-1-properties-initial-volume-set-where-the-module-state-is-stored-name-of-the-volume-element.md))
diff --git a/core/import-module-input-1-properties-module-image-name.md b/core/import-module-input-1-properties-module-image-name.md
new file mode 100644
index 000000000..ddf11dac6
--- /dev/null
+++ b/core/import-module-input-1-properties-module-image-name.md
@@ -0,0 +1,15 @@
+# Module image name Schema
+
+```txt
+http://schema.nethserver.org/cluster/import-module-input.json#/properties/image
+```
+
+Name of the module image to install. If the image is not a URL, install the latest version of the module. Otherwise, just install the provided URL.
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [import-module-input.json\*](cluster/import-module-input.json "open original schema") |
+
+## image Type
+
+`string` ([Module image name](import-module-input-1-properties-module-image-name.md))
diff --git a/core/import-module-input-1-properties-node-id.md b/core/import-module-input-1-properties-node-id.md
new file mode 100644
index 000000000..4b847b431
--- /dev/null
+++ b/core/import-module-input-1-properties-node-id.md
@@ -0,0 +1,19 @@
+# Node ID Schema
+
+```txt
+http://schema.nethserver.org/cluster/import-module-input.json#/properties/node
+```
+
+Node identifier where the module has to be installed
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [import-module-input.json\*](cluster/import-module-input.json "open original schema") |
+
+## node Type
+
+`integer` ([Node ID](import-module-input-1-properties-node-id.md))
+
+## node Constraints
+
+**minimum**: the value of this number must greater than or equal to: `1`
diff --git a/core/import-module-input-1.md b/core/import-module-input-1.md
new file mode 100644
index 000000000..a7dd58c7a
--- /dev/null
+++ b/core/import-module-input-1.md
@@ -0,0 +1,103 @@
+# import-module input Schema
+
+```txt
+http://schema.nethserver.org/cluster/import-module-input.json
+```
+
+Input schema of the import-module action
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [import-module-input.json](cluster/import-module-input.json "open original schema") |
+
+## import-module input Type
+
+`object` ([import-module input](import-module-input-1.md))
+
+## import-module input Examples
+
+```json
+{
+ "image": "traefik",
+ "node": 1,
+ "volumes": [
+ "traefik-data"
+ ]
+}
+```
+
+```json
+{
+ "image": "ghcr.io/nethserver/traefik:latest",
+ "node": 1,
+ "volumes": [
+ "traefik-data"
+ ]
+}
+```
+
+# import-module input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------ | :-------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [volumes](#volumes) | `array` | Required | cannot be null | [import-module input](import-module-input-1-properties-initial-volume-set-where-the-module-state-is-stored.md "http://schema.nethserver.org/cluster/import-module-input.json#/properties/volumes") |
+| [image](#image) | `string` | Required | cannot be null | [import-module input](import-module-input-1-properties-module-image-name.md "http://schema.nethserver.org/cluster/import-module-input.json#/properties/image") |
+| [node](#node) | `integer` | Required | cannot be null | [import-module input](import-module-input-1-properties-node-id.md "http://schema.nethserver.org/cluster/import-module-input.json#/properties/node") |
+
+## volumes
+
+
+
+`volumes`
+
+* is required
+
+* Type: `string[]` ([Name of the volume element](import-module-input-1-properties-initial-volume-set-where-the-module-state-is-stored-name-of-the-volume-element.md))
+
+* cannot be null
+
+* defined in: [import-module input](import-module-input-1-properties-initial-volume-set-where-the-module-state-is-stored.md "http://schema.nethserver.org/cluster/import-module-input.json#/properties/volumes")
+
+### volumes Type
+
+`string[]` ([Name of the volume element](import-module-input-1-properties-initial-volume-set-where-the-module-state-is-stored-name-of-the-volume-element.md))
+
+## image
+
+Name of the module image to install. If the image is not a URL, install the latest version of the module. Otherwise, just install the provided URL.
+
+`image`
+
+* is required
+
+* Type: `string` ([Module image name](import-module-input-1-properties-module-image-name.md))
+
+* cannot be null
+
+* defined in: [import-module input](import-module-input-1-properties-module-image-name.md "http://schema.nethserver.org/cluster/import-module-input.json#/properties/image")
+
+### image Type
+
+`string` ([Module image name](import-module-input-1-properties-module-image-name.md))
+
+## node
+
+Node identifier where the module has to be installed
+
+`node`
+
+* is required
+
+* Type: `integer` ([Node ID](import-module-input-1-properties-node-id.md))
+
+* cannot be null
+
+* defined in: [import-module input](import-module-input-1-properties-node-id.md "http://schema.nethserver.org/cluster/import-module-input.json#/properties/node")
+
+### node Type
+
+`integer` ([Node ID](import-module-input-1-properties-node-id.md))
+
+### node Constraints
+
+**minimum**: the value of this number must greater than or equal to: `1`
diff --git a/core/import-module-input-properties-initial-volume-set-where-the-module-state-is-stored-items.md b/core/import-module-input-properties-initial-volume-set-where-the-module-state-is-stored-items.md
new file mode 100644
index 000000000..2ae8926bf
--- /dev/null
+++ b/core/import-module-input-properties-initial-volume-set-where-the-module-state-is-stored-items.md
@@ -0,0 +1,15 @@
+# Untitled string in import-module input Schema
+
+```txt
+http://schema.nethserver.org/module/import-module-input.json#/properties/volumes/items
+```
+
+For rootfull modules, the given volume name is prefixed automatically with the module ID
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :----------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [import-module-input.json\*](module/import-module-input.json "open original schema") |
+
+## items Type
+
+`string`
diff --git a/core/import-module-input-properties-initial-volume-set-where-the-module-state-is-stored.md b/core/import-module-input-properties-initial-volume-set-where-the-module-state-is-stored.md
new file mode 100644
index 000000000..8a4fc9841
--- /dev/null
+++ b/core/import-module-input-properties-initial-volume-set-where-the-module-state-is-stored.md
@@ -0,0 +1,15 @@
+# Initial volume set where the module state is stored Schema
+
+```txt
+http://schema.nethserver.org/module/import-module-input.json#/properties/volumes
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :----------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [import-module-input.json\*](module/import-module-input.json "open original schema") |
+
+## volumes Type
+
+`string[]`
diff --git a/core/import-module-input-properties-rsyncd-service-credentials-items.md b/core/import-module-input-properties-rsyncd-service-credentials-items.md
new file mode 100644
index 000000000..fd4a15d01
--- /dev/null
+++ b/core/import-module-input-properties-rsyncd-service-credentials-items.md
@@ -0,0 +1,19 @@
+# Untitled string in import-module input Schema
+
+```txt
+http://schema.nethserver.org/module/import-module-input.json#/properties/credentials/items
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :----------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [import-module-input.json\*](module/import-module-input.json "open original schema") |
+
+## items Type
+
+`string`
+
+## items Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/import-module-input-properties-rsyncd-service-credentials.md b/core/import-module-input-properties-rsyncd-service-credentials.md
new file mode 100644
index 000000000..62adcf1f7
--- /dev/null
+++ b/core/import-module-input-properties-rsyncd-service-credentials.md
@@ -0,0 +1,21 @@
+# Rsyncd service credentials Schema
+
+```txt
+http://schema.nethserver.org/module/import-module-input.json#/properties/credentials
+```
+
+An array with two elements: username, password
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :----------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [import-module-input.json\*](module/import-module-input.json "open original schema") |
+
+## credentials Type
+
+`string[]`
+
+## credentials Constraints
+
+**maximum number of items**: the maximum number of items for this array is: `2`
+
+**minimum number of items**: the minimum number of items for this array is: `2`
diff --git a/core/import-module-input-properties-rsyncd-tcp-port-number.md b/core/import-module-input-properties-rsyncd-tcp-port-number.md
new file mode 100644
index 000000000..a3c5c635c
--- /dev/null
+++ b/core/import-module-input-properties-rsyncd-tcp-port-number.md
@@ -0,0 +1,19 @@
+# Rsyncd TCP port number Schema
+
+```txt
+http://schema.nethserver.org/module/import-module-input.json#/properties/port
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :----------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [import-module-input.json\*](module/import-module-input.json "open original schema") |
+
+## port Type
+
+`integer` ([Rsyncd TCP port number](import-module-input-properties-rsyncd-tcp-port-number.md))
+
+## port Constraints
+
+**minimum**: the value of this number must greater than or equal to: `1`
diff --git a/core/import-module-input.json b/core/import-module-input.json
new file mode 100644
index 000000000..12a2741a7
--- /dev/null
+++ b/core/import-module-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"import-module input","$id":"http://schema.nethserver.org/cluster/import-module-input.json","description":"Input schema of the import-module action","examples":[{"image":"traefik","node":1,"volumes":["traefik-data"]},{"image":"ghcr.io/nethserver/traefik:latest","node":1,"volumes":["traefik-data"]}],"type":"object","required":["image","node","volumes"],"properties":{"volumes":{"title":"Initial volume set where the module state is stored","type":"array","items":{"type":"string","title":"Name of the volume element"}},"image":{"title":"Module image name","description":"Name of the module image to install. If the image is not a URL, install the latest version of the module. Otherwise, just install the provided URL.","type":"string"},"node":{"title":"Node ID","description":"Node identifier where the module has to be installed","type":"integer","minimum":1}}}
diff --git a/core/import-module-input.md b/core/import-module-input.md
new file mode 100644
index 000000000..725d7e6be
--- /dev/null
+++ b/core/import-module-input.md
@@ -0,0 +1,116 @@
+# import-module input Schema
+
+```txt
+http://schema.nethserver.org/module/import-module-input.json
+```
+
+Import the module state from an external procedure with rsync
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [import-module-input.json](module/import-module-input.json "open original schema") |
+
+## import-module input Type
+
+`object` ([import-module input](import-module-input.md))
+
+## import-module input Examples
+
+```json
+{
+ "credentials": [
+ "dokuwiki1",
+ "s3cr3t"
+ ],
+ "port": 20027,
+ "volumes": [
+ "dokuwiki-data"
+ ]
+}
+```
+
+```json
+{
+ "credentials": [
+ "samba3",
+ "s3cr3t"
+ ],
+ "port": 20028,
+ "volumes": [
+ "data",
+ "config"
+ ]
+}
+```
+
+# import-module input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :-------------------------- | :-------- | :------- | :------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [volumes](#volumes) | `array` | Required | cannot be null | [import-module input](import-module-input-properties-initial-volume-set-where-the-module-state-is-stored.md "http://schema.nethserver.org/module/import-module-input.json#/properties/volumes") |
+| [port](#port) | `integer` | Required | cannot be null | [import-module input](import-module-input-properties-rsyncd-tcp-port-number.md "http://schema.nethserver.org/module/import-module-input.json#/properties/port") |
+| [credentials](#credentials) | `array` | Required | cannot be null | [import-module input](import-module-input-properties-rsyncd-service-credentials.md "http://schema.nethserver.org/module/import-module-input.json#/properties/credentials") |
+
+## volumes
+
+
+
+`volumes`
+
+* is required
+
+* Type: `string[]`
+
+* cannot be null
+
+* defined in: [import-module input](import-module-input-properties-initial-volume-set-where-the-module-state-is-stored.md "http://schema.nethserver.org/module/import-module-input.json#/properties/volumes")
+
+### volumes Type
+
+`string[]`
+
+## port
+
+
+
+`port`
+
+* is required
+
+* Type: `integer` ([Rsyncd TCP port number](import-module-input-properties-rsyncd-tcp-port-number.md))
+
+* cannot be null
+
+* defined in: [import-module input](import-module-input-properties-rsyncd-tcp-port-number.md "http://schema.nethserver.org/module/import-module-input.json#/properties/port")
+
+### port Type
+
+`integer` ([Rsyncd TCP port number](import-module-input-properties-rsyncd-tcp-port-number.md))
+
+### port Constraints
+
+**minimum**: the value of this number must greater than or equal to: `1`
+
+## credentials
+
+An array with two elements: username, password
+
+`credentials`
+
+* is required
+
+* Type: `string[]`
+
+* cannot be null
+
+* defined in: [import-module input](import-module-input-properties-rsyncd-service-credentials.md "http://schema.nethserver.org/module/import-module-input.json#/properties/credentials")
+
+### credentials Type
+
+`string[]`
+
+### credentials Constraints
+
+**maximum number of items**: the maximum number of items for this array is: `2`
+
+**minimum number of items**: the minimum number of items for this array is: `2`
diff --git a/core/import-module-output.json b/core/import-module-output.json
new file mode 100644
index 000000000..4b2059e07
--- /dev/null
+++ b/core/import-module-output.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"import-module output","$id":"http://schema.nethserver.org/cluster/import-module-output.json","description":"Output schema of the import-module action. It has the same format of the add-module action output","examples":[{"credentials":["dokuwiki1","16541c262d4c8-b1e8-4e95-a31b-8c3ed239203f"],"port":20031,"address":"10.5.4.1","task":"module/dokuwiki1/b75964f0-766c-4869-bacd-941171753487"}],"type":"object"}
diff --git a/core/import-module-output.md b/core/import-module-output.md
new file mode 100644
index 000000000..71788efab
--- /dev/null
+++ b/core/import-module-output.md
@@ -0,0 +1,29 @@
+# import-module output Schema
+
+```txt
+http://schema.nethserver.org/cluster/import-module-output.json
+```
+
+Output schema of the import-module action. It has the same format of the add-module action output
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [import-module-output.json](cluster/import-module-output.json "open original schema") |
+
+## import-module output Type
+
+`object` ([import-module output](import-module-output.md))
+
+## import-module output Examples
+
+```json
+{
+ "credentials": [
+ "dokuwiki1",
+ "16541c262d4c8-b1e8-4e95-a31b-8c3ed239203f"
+ ],
+ "port": 20031,
+ "address": "10.5.4.1",
+ "task": "module/dokuwiki1/b75964f0-766c-4869-bacd-941171753487"
+}
+```
diff --git a/core/join-cluster-input-examples-0.md b/core/join-cluster-input-examples-0.md
new file mode 100644
index 000000000..3f469e0e1
--- /dev/null
+++ b/core/join-cluster-input-examples-0.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in join-cluster input Schema
+
+```txt
+http://schema.nethserver.org/cluster/join-cluster-input.json#/examples/0
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [join-cluster-input.json\*](cluster/join-cluster-input.json "open original schema") |
+
+## 0 Type
+
+unknown
diff --git a/core/join-cluster-input-properties-endpoint.md b/core/join-cluster-input-properties-endpoint.md
new file mode 100644
index 000000000..865accf5f
--- /dev/null
+++ b/core/join-cluster-input-properties-endpoint.md
@@ -0,0 +1,25 @@
+# Untitled string in join-cluster input Schema
+
+```txt
+http://schema.nethserver.org/cluster/join-cluster-input.json#/properties/endpoint
+```
+
+The public WireGuard VPN endpoint in `hostname:port` form. The given port may differ from 55820 as it depends on external configurations (i.e. port-forwards)
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [join-cluster-input.json\*](cluster/join-cluster-input.json "open original schema") |
+
+## endpoint Type
+
+`string`
+
+## endpoint Examples
+
+```json
+"my.example.com:55820"
+```
+
+```json
+"1.2.3.4:60000"
+```
diff --git a/core/join-cluster-input-properties-jwt-authorization-token.md b/core/join-cluster-input-properties-jwt-authorization-token.md
new file mode 100644
index 000000000..0ee1577c4
--- /dev/null
+++ b/core/join-cluster-input-properties-jwt-authorization-token.md
@@ -0,0 +1,19 @@
+# JWT authorization token Schema
+
+```txt
+http://schema.nethserver.org/cluster/join-cluster-input.json#/properties/jwt
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [join-cluster-input.json\*](cluster/join-cluster-input.json "open original schema") |
+
+## jwt Type
+
+`string` ([JWT authorization token](join-cluster-input-properties-jwt-authorization-token.md))
+
+## jwt Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/join-cluster-input-properties-leader-node-url.md b/core/join-cluster-input-properties-leader-node-url.md
new file mode 100644
index 000000000..4c45c6ad7
--- /dev/null
+++ b/core/join-cluster-input-properties-leader-node-url.md
@@ -0,0 +1,25 @@
+# Leader node URL Schema
+
+```txt
+http://schema.nethserver.org/cluster/join-cluster-input.json#/properties/url
+```
+
+Public URL of the leader API endpoint
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [join-cluster-input.json\*](cluster/join-cluster-input.json "open original schema") |
+
+## url Type
+
+`string` ([Leader node URL](join-cluster-input-properties-leader-node-url.md))
+
+## url Constraints
+
+**pattern**: the string must match the following regular expression:
+
+```regexp
+^https?://.+$
+```
+
+[try pattern](https://regexr.com/?expression=%5Ehttps%3F%3A%2F%2F.%2B%24 "try regular expression with regexr.com")
diff --git a/core/join-cluster-input-properties-tls-verification.md b/core/join-cluster-input-properties-tls-verification.md
new file mode 100644
index 000000000..759440c7d
--- /dev/null
+++ b/core/join-cluster-input-properties-tls-verification.md
@@ -0,0 +1,25 @@
+# TLS verification Schema
+
+```txt
+http://schema.nethserver.org/cluster/join-cluster-input.json#/properties/tls_verify
+```
+
+If set to `false` the given @url is not subject to TLS certificate validation
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [join-cluster-input.json\*](cluster/join-cluster-input.json "open original schema") |
+
+## tls\_verify Type
+
+`boolean` ([TLS verification](join-cluster-input-properties-tls-verification.md))
+
+## tls\_verify Examples
+
+```json
+true
+```
+
+```json
+false
+```
diff --git a/core/join-cluster-input-properties.md b/core/join-cluster-input-properties.md
new file mode 100644
index 000000000..ae9075c4a
--- /dev/null
+++ b/core/join-cluster-input-properties.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in join-cluster input Schema
+
+```txt
+http://schema.nethserver.org/cluster/join-cluster-input.json#/properties
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [join-cluster-input.json\*](cluster/join-cluster-input.json "open original schema") |
+
+## properties Type
+
+unknown
diff --git a/core/join-cluster-input.json b/core/join-cluster-input.json
new file mode 100644
index 000000000..dfe1ebbd1
--- /dev/null
+++ b/core/join-cluster-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"join-cluster input","$id":"http://schema.nethserver.org/cluster/join-cluster-input.json","description":"Discard current Redis DB and installed modules, then join an existing cluster","examples":[{"tls_verify":true,"url":"https://my.example.com","jwt":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJmb28iOiJiYXIiLCJpYXQiOjE0MzQ0Nzk4ODN9.HQyx15jWm1upqsrKSf89X_iP0sg7N46a9pqBVGPMYdiqZeuU_ZZOdU-zizHJoIHMIJxtEWzpSMaVubJW0AJsTqjqQf6GoJ4cmFAfmfUFXmMC4Xv5oc4UqvGizpoLjfZedd834PcwbS-WskZcL4pVNmBIGRtDXkoU1j2X1P5M_sNJ9lYZ5vITyqe4MYJovQzNdQziUNhcMI5wkXncV7XzGInBeQsPquASWVG4gb3Y--k1P3xWA4Df3rKeEQBbInDKXczvDpfIlTojx4Ch8OM8vXWWNxW-mIQrV31wRrS9XtNoig7irx8N0MzokiYKrQ8WP_ezPicHvVPIHhz-InOw"}],"required":["tls_verify","url","jwt"],"properties":{"tls_verify":{"type":"boolean","title":"TLS verification","description":"If set to `false` the given @url is not subject to TLS certificate validation","examples":[true,false]},"url":{"type":"string","title":"Leader node URL","description":"Public URL of the leader API endpoint","pattern":"^https?://.+$"},"jwt":{"type":"string","title":"JWT authorization token","minLength":1},"endpoint":{"description":"The public WireGuard VPN endpoint in `hostname:port` form. The given port may differ from 55820 as it depends on external configurations (i.e. port-forwards)","examples":["my.example.com:55820","1.2.3.4:60000"],"type":"string"}}}
diff --git a/core/join-cluster-input.md b/core/join-cluster-input.md
new file mode 100644
index 000000000..4f80d92cc
--- /dev/null
+++ b/core/join-cluster-input.md
@@ -0,0 +1,140 @@
+# join-cluster input Schema
+
+```txt
+http://schema.nethserver.org/cluster/join-cluster-input.json
+```
+
+Discard current Redis DB and installed modules, then join an existing cluster
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [join-cluster-input.json](cluster/join-cluster-input.json "open original schema") |
+
+## join-cluster input Type
+
+unknown ([join-cluster input](join-cluster-input.md))
+
+## join-cluster input Examples
+
+```json
+{
+ "tls_verify": true,
+ "url": "https://my.example.com",
+ "jwt": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJmb28iOiJiYXIiLCJpYXQiOjE0MzQ0Nzk4ODN9.HQyx15jWm1upqsrKSf89X_iP0sg7N46a9pqBVGPMYdiqZeuU_ZZOdU-zizHJoIHMIJxtEWzpSMaVubJW0AJsTqjqQf6GoJ4cmFAfmfUFXmMC4Xv5oc4UqvGizpoLjfZedd834PcwbS-WskZcL4pVNmBIGRtDXkoU1j2X1P5M_sNJ9lYZ5vITyqe4MYJovQzNdQziUNhcMI5wkXncV7XzGInBeQsPquASWVG4gb3Y--k1P3xWA4Df3rKeEQBbInDKXczvDpfIlTojx4Ch8OM8vXWWNxW-mIQrV31wRrS9XtNoig7irx8N0MzokiYKrQ8WP_ezPicHvVPIHhz-InOw"
+}
+```
+
+# join-cluster input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------- | :-------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| [tls\_verify](#tls_verify) | `boolean` | Required | cannot be null | [join-cluster input](join-cluster-input-properties-tls-verification.md "http://schema.nethserver.org/cluster/join-cluster-input.json#/properties/tls_verify") |
+| [url](#url) | `string` | Required | cannot be null | [join-cluster input](join-cluster-input-properties-leader-node-url.md "http://schema.nethserver.org/cluster/join-cluster-input.json#/properties/url") |
+| [jwt](#jwt) | `string` | Required | cannot be null | [join-cluster input](join-cluster-input-properties-jwt-authorization-token.md "http://schema.nethserver.org/cluster/join-cluster-input.json#/properties/jwt") |
+| [endpoint](#endpoint) | `string` | Optional | cannot be null | [join-cluster input](join-cluster-input-properties-endpoint.md "http://schema.nethserver.org/cluster/join-cluster-input.json#/properties/endpoint") |
+
+## tls\_verify
+
+If set to `false` the given @url is not subject to TLS certificate validation
+
+`tls_verify`
+
+* is required
+
+* Type: `boolean` ([TLS verification](join-cluster-input-properties-tls-verification.md))
+
+* cannot be null
+
+* defined in: [join-cluster input](join-cluster-input-properties-tls-verification.md "http://schema.nethserver.org/cluster/join-cluster-input.json#/properties/tls_verify")
+
+### tls\_verify Type
+
+`boolean` ([TLS verification](join-cluster-input-properties-tls-verification.md))
+
+### tls\_verify Examples
+
+```json
+true
+```
+
+```json
+false
+```
+
+## url
+
+Public URL of the leader API endpoint
+
+`url`
+
+* is required
+
+* Type: `string` ([Leader node URL](join-cluster-input-properties-leader-node-url.md))
+
+* cannot be null
+
+* defined in: [join-cluster input](join-cluster-input-properties-leader-node-url.md "http://schema.nethserver.org/cluster/join-cluster-input.json#/properties/url")
+
+### url Type
+
+`string` ([Leader node URL](join-cluster-input-properties-leader-node-url.md))
+
+### url Constraints
+
+**pattern**: the string must match the following regular expression:
+
+```regexp
+^https?://.+$
+```
+
+[try pattern](https://regexr.com/?expression=%5Ehttps%3F%3A%2F%2F.%2B%24 "try regular expression with regexr.com")
+
+## jwt
+
+
+
+`jwt`
+
+* is required
+
+* Type: `string` ([JWT authorization token](join-cluster-input-properties-jwt-authorization-token.md))
+
+* cannot be null
+
+* defined in: [join-cluster input](join-cluster-input-properties-jwt-authorization-token.md "http://schema.nethserver.org/cluster/join-cluster-input.json#/properties/jwt")
+
+### jwt Type
+
+`string` ([JWT authorization token](join-cluster-input-properties-jwt-authorization-token.md))
+
+### jwt Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## endpoint
+
+The public WireGuard VPN endpoint in `hostname:port` form. The given port may differ from 55820 as it depends on external configurations (i.e. port-forwards)
+
+`endpoint`
+
+* is optional
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [join-cluster input](join-cluster-input-properties-endpoint.md "http://schema.nethserver.org/cluster/join-cluster-input.json#/properties/endpoint")
+
+### endpoint Type
+
+`string`
+
+### endpoint Examples
+
+```json
+"my.example.com:55820"
+```
+
+```json
+"1.2.3.4:60000"
+```
diff --git a/core/join-cluster-output-properties-node-identifier.md b/core/join-cluster-output-properties-node-identifier.md
new file mode 100644
index 000000000..7d49ce084
--- /dev/null
+++ b/core/join-cluster-output-properties-node-identifier.md
@@ -0,0 +1,15 @@
+# Node identifier Schema
+
+```txt
+http://schema.nethserver.org/cluster/join-cluster-output.json#/properties/node_id
+```
+
+Allocated identifier of the new node
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [join-cluster-output.json\*](cluster/join-cluster-output.json "open original schema") |
+
+## node\_id Type
+
+`integer` ([Node identifier](join-cluster-output-properties-node-identifier.md))
diff --git a/core/join-cluster-output.json b/core/join-cluster-output.json
new file mode 100644
index 000000000..02325fca3
--- /dev/null
+++ b/core/join-cluster-output.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"join-cluster output","$id":"http://schema.nethserver.org/cluster/join-cluster-output.json","description":"","examples":[{"node_id":3}],"type":"object","required":["node_id"],"properties":{"node_id":{"title":"Node identifier","description":"Allocated identifier of the new node","type":"integer","minimumExclusive":1}}}
diff --git a/core/join-cluster-output.md b/core/join-cluster-output.md
new file mode 100644
index 000000000..04998d56e
--- /dev/null
+++ b/core/join-cluster-output.md
@@ -0,0 +1,47 @@
+# join-cluster output Schema
+
+```txt
+http://schema.nethserver.org/cluster/join-cluster-output.json
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [join-cluster-output.json](cluster/join-cluster-output.json "open original schema") |
+
+## join-cluster output Type
+
+`object` ([join-cluster output](join-cluster-output.md))
+
+## join-cluster output Examples
+
+```json
+{
+ "node_id": 3
+}
+```
+
+# join-cluster output Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------- | :-------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [node\_id](#node_id) | `integer` | Required | cannot be null | [join-cluster output](join-cluster-output-properties-node-identifier.md "http://schema.nethserver.org/cluster/join-cluster-output.json#/properties/node_id") |
+
+## node\_id
+
+Allocated identifier of the new node
+
+`node_id`
+
+* is required
+
+* Type: `integer` ([Node identifier](join-cluster-output-properties-node-identifier.md))
+
+* cannot be null
+
+* defined in: [join-cluster output](join-cluster-output-properties-node-identifier.md "http://schema.nethserver.org/cluster/join-cluster-output.json#/properties/node_id")
+
+### node\_id Type
+
+`integer` ([Node identifier](join-cluster-output-properties-node-identifier.md))
diff --git a/core/join-node-input-properties-leader-ip-address.md b/core/join-node-input-properties-leader-ip-address.md
new file mode 100644
index 000000000..18d24d7be
--- /dev/null
+++ b/core/join-node-input-properties-leader-ip-address.md
@@ -0,0 +1,19 @@
+# Leader IP address Schema
+
+```txt
+http://schema.nethserver.org/cluster/join-node-input.json#/properties/leader_ip_address
+```
+
+VPN IP address of the leader node
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [join-node-input.json\*](cluster/join-node-input.json "open original schema") |
+
+## leader\_ip\_address Type
+
+`string` ([Leader IP address](join-node-input-properties-leader-ip-address.md))
+
+## leader\_ip\_address Constraints
+
+**IPv4**: the string must be an IPv4 address (dotted quad), according to [RFC 2673, section 3.2](https://tools.ietf.org/html/rfc2673 "check the specification")
diff --git a/core/join-node-input-properties-leader-public-vpn-udp-endpoint.md b/core/join-node-input-properties-leader-public-vpn-udp-endpoint.md
new file mode 100644
index 000000000..2ff03adcf
--- /dev/null
+++ b/core/join-node-input-properties-leader-public-vpn-udp-endpoint.md
@@ -0,0 +1,25 @@
+# Leader public VPN UDP endpoint Schema
+
+```txt
+http://schema.nethserver.org/cluster/join-node-input.json#/properties/leader_endpoint
+```
+
+WireGuard public UDP endpoint address to contact the leader node. Syntax is `hostname:port` or `IP:port`
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [join-node-input.json\*](cluster/join-node-input.json "open original schema") |
+
+## leader\_endpoint Type
+
+`string` ([Leader public VPN UDP endpoint](join-node-input-properties-leader-public-vpn-udp-endpoint.md))
+
+## leader\_endpoint Examples
+
+```json
+"my.example.com:55820"
+```
+
+```json
+"1.2.3.4:55820"
+```
diff --git a/core/join-node-input-properties-leader-vpn-key.md b/core/join-node-input-properties-leader-vpn-key.md
new file mode 100644
index 000000000..d439883d7
--- /dev/null
+++ b/core/join-node-input-properties-leader-vpn-key.md
@@ -0,0 +1,15 @@
+# Leader VPN key Schema
+
+```txt
+http://schema.nethserver.org/cluster/join-node-input.json#/properties/leader_public_key
+```
+
+WireGuard public key of the leader node
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [join-node-input.json\*](cluster/join-node-input.json "open original schema") |
+
+## leader\_public\_key Type
+
+`string` ([Leader VPN key](join-node-input-properties-leader-vpn-key.md))
diff --git a/core/join-node-input-properties-node-identifier.md b/core/join-node-input-properties-node-identifier.md
new file mode 100644
index 000000000..1e912c630
--- /dev/null
+++ b/core/join-node-input-properties-node-identifier.md
@@ -0,0 +1,15 @@
+# Node identifier Schema
+
+```txt
+http://schema.nethserver.org/cluster/join-node-input.json#/properties/node_id
+```
+
+Allocated identifier of the new node
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [join-node-input.json\*](cluster/join-node-input.json "open original schema") |
+
+## node\_id Type
+
+`integer` ([Node identifier](join-node-input-properties-node-identifier.md))
diff --git a/core/join-node-input-properties-node-ip-address.md b/core/join-node-input-properties-node-ip-address.md
new file mode 100644
index 000000000..2e90fe756
--- /dev/null
+++ b/core/join-node-input-properties-node-ip-address.md
@@ -0,0 +1,19 @@
+# Node IP address Schema
+
+```txt
+http://schema.nethserver.org/cluster/join-node-input.json#/properties/ip_address
+```
+
+VPN IP address of the added node
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [join-node-input.json\*](cluster/join-node-input.json "open original schema") |
+
+## ip\_address Type
+
+`string` ([Node IP address](join-node-input-properties-node-ip-address.md))
+
+## ip\_address Constraints
+
+**IPv4**: the string must be an IPv4 address (dotted quad), according to [RFC 2673, section 3.2](https://tools.ietf.org/html/rfc2673 "check the specification")
diff --git a/core/join-node-input.json b/core/join-node-input.json
new file mode 100644
index 000000000..313961206
--- /dev/null
+++ b/core/join-node-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"join-node input","$id":"http://schema.nethserver.org/cluster/join-node-input.json","description":"Start WireGuard VPN, discard current Redis DB and start replication. This action never returns! The input format is the same of add-node output.","examples":[{"node_id":2,"ip_address":"10.5.4.2","leader_public_key":"aoBydmHg2WWv5OqYM1ZegcCdC6dev+IHnoNv3ftNY2U=","network":"10.5.4.0/24","leader_ip_address":"10.5.4.1","leader_endpoint":"fc1.example.com:55820"}],"type":"object","required":["node_id","ip_address","network","leader_public_key","leader_ip_address","leader_endpoint"],"properties":{"node_id":{"title":"Node identifier","description":"Allocated identifier of the new node","type":"integer","minimumExclusive":1},"ip_address":{"title":"Node IP address","description":"VPN IP address of the added node","type":"string","format":"ipv4"},"network":{"title":"Cluster network address","description":"The VPN network in CIDR notation used by the cluster","$ref":"http://schema.nethserver.org/cluster.json#/definitions/ipv4-cidr"},"leader_public_key":{"title":"Leader VPN key","description":"WireGuard public key of the leader node","type":"string"},"leader_ip_address":{"title":"Leader IP address","description":"VPN IP address of the leader node","type":"string","format":"ipv4"},"leader_endpoint":{"title":"Leader public VPN UDP endpoint","description":"WireGuard public UDP endpoint address to contact the leader node. Syntax is `hostname:port` or `IP:port`","type":"string","examples":["my.example.com:55820","1.2.3.4:55820"]}}}
diff --git a/core/join-node-input.md b/core/join-node-input.md
new file mode 100644
index 000000000..2926a9acf
--- /dev/null
+++ b/core/join-node-input.md
@@ -0,0 +1,185 @@
+# join-node input Schema
+
+```txt
+http://schema.nethserver.org/cluster/join-node-input.json
+```
+
+Start WireGuard VPN, discard current Redis DB and start replication. This action never returns! The input format is the same of add-node output.
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [join-node-input.json](cluster/join-node-input.json "open original schema") |
+
+## join-node input Type
+
+`object` ([join-node input](join-node-input.md))
+
+## join-node input Examples
+
+```json
+{
+ "node_id": 2,
+ "ip_address": "10.5.4.2",
+ "leader_public_key": "aoBydmHg2WWv5OqYM1ZegcCdC6dev+IHnoNv3ftNY2U=",
+ "network": "10.5.4.0/24",
+ "leader_ip_address": "10.5.4.1",
+ "leader_endpoint": "fc1.example.com:55820"
+}
+```
+
+# join-node input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :---------------------------------------- | :-------- | :------- | :------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [node\_id](#node_id) | `integer` | Required | cannot be null | [join-node input](join-node-input-properties-node-identifier.md "http://schema.nethserver.org/cluster/join-node-input.json#/properties/node_id") |
+| [ip\_address](#ip_address) | `string` | Required | cannot be null | [join-node input](join-node-input-properties-node-ip-address.md "http://schema.nethserver.org/cluster/join-node-input.json#/properties/ip_address") |
+| [network](#network) | `string` | Required | cannot be null | [join-node input](cluster-definitions-ipv4-cidr.md "http://schema.nethserver.org/cluster/join-node-input.json#/properties/network") |
+| [leader\_public\_key](#leader_public_key) | `string` | Required | cannot be null | [join-node input](join-node-input-properties-leader-vpn-key.md "http://schema.nethserver.org/cluster/join-node-input.json#/properties/leader_public_key") |
+| [leader\_ip\_address](#leader_ip_address) | `string` | Required | cannot be null | [join-node input](join-node-input-properties-leader-ip-address.md "http://schema.nethserver.org/cluster/join-node-input.json#/properties/leader_ip_address") |
+| [leader\_endpoint](#leader_endpoint) | `string` | Required | cannot be null | [join-node input](join-node-input-properties-leader-public-vpn-udp-endpoint.md "http://schema.nethserver.org/cluster/join-node-input.json#/properties/leader_endpoint") |
+
+## node\_id
+
+Allocated identifier of the new node
+
+`node_id`
+
+* is required
+
+* Type: `integer` ([Node identifier](join-node-input-properties-node-identifier.md))
+
+* cannot be null
+
+* defined in: [join-node input](join-node-input-properties-node-identifier.md "http://schema.nethserver.org/cluster/join-node-input.json#/properties/node_id")
+
+### node\_id Type
+
+`integer` ([Node identifier](join-node-input-properties-node-identifier.md))
+
+## ip\_address
+
+VPN IP address of the added node
+
+`ip_address`
+
+* is required
+
+* Type: `string` ([Node IP address](join-node-input-properties-node-ip-address.md))
+
+* cannot be null
+
+* defined in: [join-node input](join-node-input-properties-node-ip-address.md "http://schema.nethserver.org/cluster/join-node-input.json#/properties/ip_address")
+
+### ip\_address Type
+
+`string` ([Node IP address](join-node-input-properties-node-ip-address.md))
+
+### ip\_address Constraints
+
+**IPv4**: the string must be an IPv4 address (dotted quad), according to [RFC 2673, section 3.2](https://tools.ietf.org/html/rfc2673 "check the specification")
+
+## network
+
+IPv4 with netmask in CIDR notation
+
+`network`
+
+* is required
+
+* Type: `string` ([IPv4 CIDR](cluster-definitions-ipv4-cidr.md))
+
+* cannot be null
+
+* defined in: [join-node input](cluster-definitions-ipv4-cidr.md "http://schema.nethserver.org/cluster/join-node-input.json#/properties/network")
+
+### network Type
+
+`string` ([IPv4 CIDR](cluster-definitions-ipv4-cidr.md))
+
+### network Constraints
+
+**pattern**: the string must match the following regular expression:
+
+```regexp
+^([0-9]{1,3}\.){3}[0-9]{1,3}(\/([0-9]|[1-2][0-9]|3[0-2]))?$
+```
+
+[try pattern](https://regexr.com/?expression=%5E\(%5B0-9%5D%7B1%2C3%7D%5C.\)%7B3%7D%5B0-9%5D%7B1%2C3%7D\(%5C%2F\(%5B0-9%5D%7C%5B1-2%5D%5B0-9%5D%7C3%5B0-2%5D\)\)%3F%24 "try regular expression with regexr.com")
+
+### network Examples
+
+```json
+"10.5.4.0/24"
+```
+
+```json
+"192.168.73.0/24"
+```
+
+## leader\_public\_key
+
+WireGuard public key of the leader node
+
+`leader_public_key`
+
+* is required
+
+* Type: `string` ([Leader VPN key](join-node-input-properties-leader-vpn-key.md))
+
+* cannot be null
+
+* defined in: [join-node input](join-node-input-properties-leader-vpn-key.md "http://schema.nethserver.org/cluster/join-node-input.json#/properties/leader_public_key")
+
+### leader\_public\_key Type
+
+`string` ([Leader VPN key](join-node-input-properties-leader-vpn-key.md))
+
+## leader\_ip\_address
+
+VPN IP address of the leader node
+
+`leader_ip_address`
+
+* is required
+
+* Type: `string` ([Leader IP address](join-node-input-properties-leader-ip-address.md))
+
+* cannot be null
+
+* defined in: [join-node input](join-node-input-properties-leader-ip-address.md "http://schema.nethserver.org/cluster/join-node-input.json#/properties/leader_ip_address")
+
+### leader\_ip\_address Type
+
+`string` ([Leader IP address](join-node-input-properties-leader-ip-address.md))
+
+### leader\_ip\_address Constraints
+
+**IPv4**: the string must be an IPv4 address (dotted quad), according to [RFC 2673, section 3.2](https://tools.ietf.org/html/rfc2673 "check the specification")
+
+## leader\_endpoint
+
+WireGuard public UDP endpoint address to contact the leader node. Syntax is `hostname:port` or `IP:port`
+
+`leader_endpoint`
+
+* is required
+
+* Type: `string` ([Leader public VPN UDP endpoint](join-node-input-properties-leader-public-vpn-udp-endpoint.md))
+
+* cannot be null
+
+* defined in: [join-node input](join-node-input-properties-leader-public-vpn-udp-endpoint.md "http://schema.nethserver.org/cluster/join-node-input.json#/properties/leader_endpoint")
+
+### leader\_endpoint Type
+
+`string` ([Leader public VPN UDP endpoint](join-node-input-properties-leader-public-vpn-udp-endpoint.md))
+
+### leader\_endpoint Examples
+
+```json
+"my.example.com:55820"
+```
+
+```json
+"1.2.3.4:55820"
+```
diff --git a/core/list-backup-repositories-output.json b/core/list-backup-repositories-output.json
new file mode 100644
index 000000000..da2cb49e4
--- /dev/null
+++ b/core/list-backup-repositories-output.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"list-backup-repositories output","$id":"http://schema.nethserver.org/cluster/list-backup-repositories-output.json","description":"Get the list of available backup repositories and the status of cluster backup password","examples":[{"repositories":[{"id":"48ce000a-79b7-5fe6-8558-177fd70c27b4","provider":"backblaze","name":"BackBlaze repo1","url":"b2:backupex1","password":"d59a90ec7ad2b2967257a7a308c82c96ac006efd138254bc1e58c8ea07c18400","parameters":{"b2_account_id":"xxxxxxxxxxxxxx","b2_account_key":"yyyyyyyyyyyyyyyyyyyyyy"}}],"password_exists":true}],"type":"object"}
diff --git a/core/list-backup-repositories-output.md b/core/list-backup-repositories-output.md
new file mode 100644
index 000000000..89a9d55e9
--- /dev/null
+++ b/core/list-backup-repositories-output.md
@@ -0,0 +1,36 @@
+# list-backup-repositories output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-backup-repositories-output.json
+```
+
+Get the list of available backup repositories and the status of cluster backup password
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-backup-repositories-output.json](cluster/list-backup-repositories-output.json "open original schema") |
+
+## list-backup-repositories output Type
+
+`object` ([list-backup-repositories output](list-backup-repositories-output.md))
+
+## list-backup-repositories output Examples
+
+```json
+{
+ "repositories": [
+ {
+ "id": "48ce000a-79b7-5fe6-8558-177fd70c27b4",
+ "provider": "backblaze",
+ "name": "BackBlaze repo1",
+ "url": "b2:backupex1",
+ "password": "d59a90ec7ad2b2967257a7a308c82c96ac006efd138254bc1e58c8ea07c18400",
+ "parameters": {
+ "b2_account_id": "xxxxxxxxxxxxxx",
+ "b2_account_key": "yyyyyyyyyyyyyyyyyyyyyy"
+ }
+ }
+ ],
+ "password_exists": true
+}
+```
diff --git a/core/list-backups-output-defs-backup-object-properties-backup-id.md b/core/list-backups-output-defs-backup-object-properties-backup-id.md
new file mode 100644
index 000000000..37b582fd6
--- /dev/null
+++ b/core/list-backups-output-defs-backup-object-properties-backup-id.md
@@ -0,0 +1,19 @@
+# Backup ID Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/backup-item/properties/id
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-backups-output.json\*](cluster/list-backups-output.json "open original schema") |
+
+## id Type
+
+`integer` ([Backup ID](list-backups-output-defs-backup-object-properties-backup-id.md))
+
+## id Constraints
+
+**minimum**: the value of this number must greater than or equal to: `1`
diff --git a/core/list-backups-output-defs-backup-object-properties-backup-name.md b/core/list-backups-output-defs-backup-object-properties-backup-name.md
new file mode 100644
index 000000000..d5909628e
--- /dev/null
+++ b/core/list-backups-output-defs-backup-object-properties-backup-name.md
@@ -0,0 +1,19 @@
+# Backup name Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/backup-item/properties/name
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-backups-output.json\*](cluster/list-backups-output.json "open original schema") |
+
+## name Type
+
+`string` ([Backup name](list-backups-output-defs-backup-object-properties-backup-name.md))
+
+## name Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/list-backups-output-defs-backup-object-properties-backup-retention.md b/core/list-backups-output-defs-backup-object-properties-backup-retention.md
new file mode 100644
index 000000000..1bb72b4e6
--- /dev/null
+++ b/core/list-backups-output-defs-backup-object-properties-backup-retention.md
@@ -0,0 +1,19 @@
+# Backup retention Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/backup-item/properties/retention
+```
+
+Number of backup snapshots to store before automatic deletion
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-backups-output.json\*](cluster/list-backups-output.json "open original schema") |
+
+## retention Type
+
+`integer` ([Backup retention](list-backups-output-defs-backup-object-properties-backup-retention.md))
+
+## retention Constraints
+
+**minimum**: the value of this number must greater than or equal to: `1`
diff --git a/core/list-backups-output-defs-backup-object-properties-enableddisabled-status-if-false-the-backup-is-stopped.md b/core/list-backups-output-defs-backup-object-properties-enableddisabled-status-if-false-the-backup-is-stopped.md
new file mode 100644
index 000000000..c633b82e4
--- /dev/null
+++ b/core/list-backups-output-defs-backup-object-properties-enableddisabled-status-if-false-the-backup-is-stopped.md
@@ -0,0 +1,15 @@
+# Enabled/disabled status. If \`false\` the backup is stopped. Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/backup-item/properties/enabled
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-backups-output.json\*](cluster/list-backups-output.json "open original schema") |
+
+## enabled Type
+
+`boolean` ([Enabled/disabled status. If \`false\` the backup is stopped.](list-backups-output-defs-backup-object-properties-enableddisabled-status-if-false-the-backup-is-stopped.md))
diff --git a/core/list-backups-output-defs-backup-object-properties-module-instances.md b/core/list-backups-output-defs-backup-object-properties-module-instances.md
new file mode 100644
index 000000000..2138ca46d
--- /dev/null
+++ b/core/list-backups-output-defs-backup-object-properties-module-instances.md
@@ -0,0 +1,15 @@
+# Module instances Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/backup-item/properties/instances
+```
+
+Identifiers of module instances included in the backup
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-backups-output.json\*](cluster/list-backups-output.json "open original schema") |
+
+## instances Type
+
+`object[]` ([Backup of a module instance](list-backups-output-defs-backup-of-a-module-instance.md))
diff --git a/core/list-backups-output-defs-backup-object-properties-schedule-expression-hint-for-ui.md b/core/list-backups-output-defs-backup-object-properties-schedule-expression-hint-for-ui.md
new file mode 100644
index 000000000..b2993b787
--- /dev/null
+++ b/core/list-backups-output-defs-backup-object-properties-schedule-expression-hint-for-ui.md
@@ -0,0 +1,15 @@
+# Schedule expression hint for UI Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/backup-item/properties/schedule_hint
+```
+
+Store arbitrary object to ease parsing of `schedule` value
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-backups-output.json\*](cluster/list-backups-output.json "open original schema") |
+
+## schedule\_hint Type
+
+`object` ([Schedule expression hint for UI](list-backups-output-defs-backup-object-properties-schedule-expression-hint-for-ui.md))
diff --git a/core/list-backups-output-defs-backup-object-properties-time-schedule-expression.md b/core/list-backups-output-defs-backup-object-properties-time-schedule-expression.md
new file mode 100644
index 000000000..f129f96cd
--- /dev/null
+++ b/core/list-backups-output-defs-backup-object-properties-time-schedule-expression.md
@@ -0,0 +1,21 @@
+# Time schedule expression Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/backup-item/properties/schedule
+```
+
+The string format must be compatible with Calendar Events, described in `systemd.timer` man page
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-backups-output.json\*](cluster/list-backups-output.json "open original schema") |
+
+## schedule Type
+
+`string` ([Time schedule expression](list-backups-output-defs-backup-object-properties-time-schedule-expression.md))
+
+## schedule Constraints
+
+**maximum length**: the maximum number of characters for this string is: `64`
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/list-backups-output-defs-backup-object.md b/core/list-backups-output-defs-backup-object.md
new file mode 100644
index 000000000..aae1d899e
--- /dev/null
+++ b/core/list-backups-output-defs-backup-object.md
@@ -0,0 +1,171 @@
+# Backup object Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/backup-item
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [list-backups-output.json\*](cluster/list-backups-output.json "open original schema") |
+
+## backup-item Type
+
+`object` ([Backup object](list-backups-output-defs-backup-object.md))
+
+# backup-item Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------------- | :-------- | :------- | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [id](#id) | `integer` | Required | cannot be null | [list-backups output](list-backups-output-defs-backup-object-properties-backup-id.md "http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/backup-item/properties/id") |
+| [instances](#instances) | `array` | Required | cannot be null | [list-backups output](list-backups-output-defs-backup-object-properties-module-instances.md "http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/backup-item/properties/instances") |
+| [schedule](#schedule) | `string` | Required | cannot be null | [list-backups output](list-backups-output-defs-backup-object-properties-time-schedule-expression.md "http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/backup-item/properties/schedule") |
+| [schedule\_hint](#schedule_hint) | `object` | Required | cannot be null | [list-backups output](list-backups-output-defs-backup-object-properties-schedule-expression-hint-for-ui.md "http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/backup-item/properties/schedule_hint") |
+| [retention](#retention) | `integer` | Required | cannot be null | [list-backups output](list-backups-output-defs-backup-object-properties-backup-retention.md "http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/backup-item/properties/retention") |
+| [name](#name) | `string` | Required | cannot be null | [list-backups output](list-backups-output-defs-backup-object-properties-backup-name.md "http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/backup-item/properties/name") |
+| [enabled](#enabled) | `boolean` | Required | cannot be null | [list-backups output](list-backups-output-defs-backup-object-properties-enableddisabled-status-if-false-the-backup-is-stopped.md "http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/backup-item/properties/enabled") |
+
+## id
+
+
+
+`id`
+
+* is required
+
+* Type: `integer` ([Backup ID](list-backups-output-defs-backup-object-properties-backup-id.md))
+
+* cannot be null
+
+* defined in: [list-backups output](list-backups-output-defs-backup-object-properties-backup-id.md "http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/backup-item/properties/id")
+
+### id Type
+
+`integer` ([Backup ID](list-backups-output-defs-backup-object-properties-backup-id.md))
+
+### id Constraints
+
+**minimum**: the value of this number must greater than or equal to: `1`
+
+## instances
+
+Identifiers of module instances included in the backup
+
+`instances`
+
+* is required
+
+* Type: `object[]` ([Backup of a module instance](list-backups-output-defs-backup-of-a-module-instance.md))
+
+* cannot be null
+
+* defined in: [list-backups output](list-backups-output-defs-backup-object-properties-module-instances.md "http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/backup-item/properties/instances")
+
+### instances Type
+
+`object[]` ([Backup of a module instance](list-backups-output-defs-backup-of-a-module-instance.md))
+
+## schedule
+
+The string format must be compatible with Calendar Events, described in `systemd.timer` man page
+
+`schedule`
+
+* is required
+
+* Type: `string` ([Time schedule expression](list-backups-output-defs-backup-object-properties-time-schedule-expression.md))
+
+* cannot be null
+
+* defined in: [list-backups output](list-backups-output-defs-backup-object-properties-time-schedule-expression.md "http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/backup-item/properties/schedule")
+
+### schedule Type
+
+`string` ([Time schedule expression](list-backups-output-defs-backup-object-properties-time-schedule-expression.md))
+
+### schedule Constraints
+
+**maximum length**: the maximum number of characters for this string is: `64`
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## schedule\_hint
+
+Store arbitrary object to ease parsing of `schedule` value
+
+`schedule_hint`
+
+* is required
+
+* Type: `object` ([Schedule expression hint for UI](list-backups-output-defs-backup-object-properties-schedule-expression-hint-for-ui.md))
+
+* cannot be null
+
+* defined in: [list-backups output](list-backups-output-defs-backup-object-properties-schedule-expression-hint-for-ui.md "http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/backup-item/properties/schedule_hint")
+
+### schedule\_hint Type
+
+`object` ([Schedule expression hint for UI](list-backups-output-defs-backup-object-properties-schedule-expression-hint-for-ui.md))
+
+## retention
+
+Number of backup snapshots to store before automatic deletion
+
+`retention`
+
+* is required
+
+* Type: `integer` ([Backup retention](list-backups-output-defs-backup-object-properties-backup-retention.md))
+
+* cannot be null
+
+* defined in: [list-backups output](list-backups-output-defs-backup-object-properties-backup-retention.md "http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/backup-item/properties/retention")
+
+### retention Type
+
+`integer` ([Backup retention](list-backups-output-defs-backup-object-properties-backup-retention.md))
+
+### retention Constraints
+
+**minimum**: the value of this number must greater than or equal to: `1`
+
+## name
+
+
+
+`name`
+
+* is required
+
+* Type: `string` ([Backup name](list-backups-output-defs-backup-object-properties-backup-name.md))
+
+* cannot be null
+
+* defined in: [list-backups output](list-backups-output-defs-backup-object-properties-backup-name.md "http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/backup-item/properties/name")
+
+### name Type
+
+`string` ([Backup name](list-backups-output-defs-backup-object-properties-backup-name.md))
+
+### name Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## enabled
+
+
+
+`enabled`
+
+* is required
+
+* Type: `boolean` ([Enabled/disabled status. If \`false\` the backup is stopped.](list-backups-output-defs-backup-object-properties-enableddisabled-status-if-false-the-backup-is-stopped.md))
+
+* cannot be null
+
+* defined in: [list-backups output](list-backups-output-defs-backup-object-properties-enableddisabled-status-if-false-the-backup-is-stopped.md "http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/backup-item/properties/enabled")
+
+### enabled Type
+
+`boolean` ([Enabled/disabled status. If \`false\` the backup is stopped.](list-backups-output-defs-backup-object-properties-enableddisabled-status-if-false-the-backup-is-stopped.md))
diff --git a/core/list-backups-output-defs-backup-of-a-module-instance-properties-last-backup-run-status.md b/core/list-backups-output-defs-backup-of-a-module-instance-properties-last-backup-run-status.md
new file mode 100644
index 000000000..5be9eb5d8
--- /dev/null
+++ b/core/list-backups-output-defs-backup-of-a-module-instance-properties-last-backup-run-status.md
@@ -0,0 +1,15 @@
+# Last backup run status Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/instance-item/properties/status
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-backups-output.json\*](cluster/list-backups-output.json "open original schema") |
+
+## status Type
+
+`object` ([Last backup run status](list-backups-output-defs-backup-of-a-module-instance-properties-last-backup-run-status.md))
diff --git a/core/list-backups-output-defs-backup-of-a-module-instance-properties-module_id.md b/core/list-backups-output-defs-backup-of-a-module-instance-properties-module_id.md
new file mode 100644
index 000000000..25a937ef3
--- /dev/null
+++ b/core/list-backups-output-defs-backup-of-a-module-instance-properties-module_id.md
@@ -0,0 +1,19 @@
+# Untitled string in list-backups output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/instance-item/properties/module_id
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-backups-output.json\*](cluster/list-backups-output.json "open original schema") |
+
+## module\_id Type
+
+`string`
+
+## module\_id Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/list-backups-output-defs-backup-of-a-module-instance-properties-repository_path.md b/core/list-backups-output-defs-backup-of-a-module-instance-properties-repository_path.md
new file mode 100644
index 000000000..69601d01c
--- /dev/null
+++ b/core/list-backups-output-defs-backup-of-a-module-instance-properties-repository_path.md
@@ -0,0 +1,19 @@
+# Untitled string in list-backups output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/instance-item/properties/repository_path
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-backups-output.json\*](cluster/list-backups-output.json "open original schema") |
+
+## repository\_path Type
+
+`string`
+
+## repository\_path Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/list-backups-output-defs-backup-of-a-module-instance-properties-ui_name.md b/core/list-backups-output-defs-backup-of-a-module-instance-properties-ui_name.md
new file mode 100644
index 000000000..af2671dba
--- /dev/null
+++ b/core/list-backups-output-defs-backup-of-a-module-instance-properties-ui_name.md
@@ -0,0 +1,15 @@
+# Untitled string in list-backups output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/instance-item/properties/ui_name
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-backups-output.json\*](cluster/list-backups-output.json "open original schema") |
+
+## ui\_name Type
+
+`string`
diff --git a/core/list-backups-output-defs-backup-of-a-module-instance.md b/core/list-backups-output-defs-backup-of-a-module-instance.md
new file mode 100644
index 000000000..457fb4bdd
--- /dev/null
+++ b/core/list-backups-output-defs-backup-of-a-module-instance.md
@@ -0,0 +1,104 @@
+# Backup of a module instance Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/instance-item
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [list-backups-output.json\*](cluster/list-backups-output.json "open original schema") |
+
+## instance-item Type
+
+`object` ([Backup of a module instance](list-backups-output-defs-backup-of-a-module-instance.md))
+
+# instance-item Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :----------------------------------- | :------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| [module\_id](#module_id) | `string` | Optional | cannot be null | [list-backups output](list-backups-output-defs-backup-of-a-module-instance-properties-module_id.md "http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/instance-item/properties/module_id") |
+| [ui\_name](#ui_name) | `string` | Optional | cannot be null | [list-backups output](list-backups-output-defs-backup-of-a-module-instance-properties-ui_name.md "http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/instance-item/properties/ui_name") |
+| [repository\_path](#repository_path) | `string` | Optional | cannot be null | [list-backups output](list-backups-output-defs-backup-of-a-module-instance-properties-repository_path.md "http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/instance-item/properties/repository_path") |
+| [status](#status) | `object` | Optional | can be null | [list-backups output](list-backups-output-defs-backup-of-a-module-instance-properties-last-backup-run-status.md "http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/instance-item/properties/status") |
+
+## module\_id
+
+
+
+`module_id`
+
+* is optional
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-backups output](list-backups-output-defs-backup-of-a-module-instance-properties-module_id.md "http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/instance-item/properties/module_id")
+
+### module\_id Type
+
+`string`
+
+### module\_id Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## ui\_name
+
+
+
+`ui_name`
+
+* is optional
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-backups output](list-backups-output-defs-backup-of-a-module-instance-properties-ui_name.md "http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/instance-item/properties/ui_name")
+
+### ui\_name Type
+
+`string`
+
+## repository\_path
+
+
+
+`repository_path`
+
+* is optional
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-backups output](list-backups-output-defs-backup-of-a-module-instance-properties-repository_path.md "http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/instance-item/properties/repository_path")
+
+### repository\_path Type
+
+`string`
+
+### repository\_path Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## status
+
+
+
+`status`
+
+* is optional
+
+* Type: `object` ([Last backup run status](list-backups-output-defs-backup-of-a-module-instance-properties-last-backup-run-status.md))
+
+* can be null
+
+* defined in: [list-backups output](list-backups-output-defs-backup-of-a-module-instance-properties-last-backup-run-status.md "http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/instance-item/properties/status")
+
+### status Type
+
+`object` ([Last backup run status](list-backups-output-defs-backup-of-a-module-instance-properties-last-backup-run-status.md))
diff --git a/core/list-backups-output-defs-last-backup-run-status.md b/core/list-backups-output-defs-last-backup-run-status.md
new file mode 100644
index 000000000..169e9033c
--- /dev/null
+++ b/core/list-backups-output-defs-last-backup-run-status.md
@@ -0,0 +1,15 @@
+# Last backup run status Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/backup-status
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-backups-output.json\*](cluster/list-backups-output.json "open original schema") |
+
+## backup-status Type
+
+`object` ([Last backup run status](list-backups-output-defs-last-backup-run-status.md))
diff --git a/core/list-backups-output-defs-unconfigured-module-instance-properties-module-id.md b/core/list-backups-output-defs-unconfigured-module-instance-properties-module-id.md
new file mode 100644
index 000000000..016ef629a
--- /dev/null
+++ b/core/list-backups-output-defs-unconfigured-module-instance-properties-module-id.md
@@ -0,0 +1,19 @@
+# Module ID Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/uinstance-item/properties/id
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-backups-output.json\*](cluster/list-backups-output.json "open original schema") |
+
+## id Type
+
+`string` ([Module ID](list-backups-output-defs-unconfigured-module-instance-properties-module-id.md))
+
+## id Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/list-backups-output-defs-unconfigured-module-instance-properties-module-ui-name.md b/core/list-backups-output-defs-unconfigured-module-instance-properties-module-ui-name.md
new file mode 100644
index 000000000..e7b40d6a8
--- /dev/null
+++ b/core/list-backups-output-defs-unconfigured-module-instance-properties-module-ui-name.md
@@ -0,0 +1,15 @@
+# Module UI name Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/uinstance-item/properties/ui_name
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-backups-output.json\*](cluster/list-backups-output.json "open original schema") |
+
+## ui\_name Type
+
+`string` ([Module UI name](list-backups-output-defs-unconfigured-module-instance-properties-module-ui-name.md))
diff --git a/core/list-backups-output-defs-unconfigured-module-instance.md b/core/list-backups-output-defs-unconfigured-module-instance.md
new file mode 100644
index 000000000..567d8492e
--- /dev/null
+++ b/core/list-backups-output-defs-unconfigured-module-instance.md
@@ -0,0 +1,62 @@
+# Unconfigured module instance Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/uinstance-item
+```
+
+Instance with no backup configured
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [list-backups-output.json\*](cluster/list-backups-output.json "open original schema") |
+
+## uinstance-item Type
+
+`object` ([Unconfigured module instance](list-backups-output-defs-unconfigured-module-instance.md))
+
+# uinstance-item Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------- | :------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [id](#id) | `string` | Optional | cannot be null | [list-backups output](list-backups-output-defs-unconfigured-module-instance-properties-module-id.md "http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/uinstance-item/properties/id") |
+| [ui\_name](#ui_name) | `string` | Optional | cannot be null | [list-backups output](list-backups-output-defs-unconfigured-module-instance-properties-module-ui-name.md "http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/uinstance-item/properties/ui_name") |
+
+## id
+
+
+
+`id`
+
+* is optional
+
+* Type: `string` ([Module ID](list-backups-output-defs-unconfigured-module-instance-properties-module-id.md))
+
+* cannot be null
+
+* defined in: [list-backups output](list-backups-output-defs-unconfigured-module-instance-properties-module-id.md "http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/uinstance-item/properties/id")
+
+### id Type
+
+`string` ([Module ID](list-backups-output-defs-unconfigured-module-instance-properties-module-id.md))
+
+### id Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## ui\_name
+
+
+
+`ui_name`
+
+* is optional
+
+* Type: `string` ([Module UI name](list-backups-output-defs-unconfigured-module-instance-properties-module-ui-name.md))
+
+* cannot be null
+
+* defined in: [list-backups output](list-backups-output-defs-unconfigured-module-instance-properties-module-ui-name.md "http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/uinstance-item/properties/ui_name")
+
+### ui\_name Type
+
+`string` ([Module UI name](list-backups-output-defs-unconfigured-module-instance-properties-module-ui-name.md))
diff --git a/core/list-backups-output-defs.md b/core/list-backups-output-defs.md
new file mode 100644
index 000000000..243a9ebc6
--- /dev/null
+++ b/core/list-backups-output-defs.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in list-backups output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-backups-output.json#/$defs
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-backups-output.json\*](cluster/list-backups-output.json "open original schema") |
+
+## $defs Type
+
+unknown
diff --git a/core/list-backups-output-properties-backups.md b/core/list-backups-output-properties-backups.md
new file mode 100644
index 000000000..cb6059c1c
--- /dev/null
+++ b/core/list-backups-output-properties-backups.md
@@ -0,0 +1,15 @@
+# Backups Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-backups-output.json#/properties/backups
+```
+
+List of configured backup objects
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-backups-output.json\*](cluster/list-backups-output.json "open original schema") |
+
+## backups Type
+
+`object[]` ([Backup object](list-backups-output-defs-backup-object.md))
diff --git a/core/list-backups-output-properties-unconfigured-module-instances.md b/core/list-backups-output-properties-unconfigured-module-instances.md
new file mode 100644
index 000000000..b93cb8322
--- /dev/null
+++ b/core/list-backups-output-properties-unconfigured-module-instances.md
@@ -0,0 +1,15 @@
+# Unconfigured module instances Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-backups-output.json#/properties/unconfigured_instances
+```
+
+List of module instances that are not included in any backup
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-backups-output.json\*](cluster/list-backups-output.json "open original schema") |
+
+## unconfigured\_instances Type
+
+`object[]` ([Unconfigured module instance](list-backups-output-defs-unconfigured-module-instance.md))
diff --git a/core/list-backups-output.json b/core/list-backups-output.json
new file mode 100644
index 000000000..ee348d220
--- /dev/null
+++ b/core/list-backups-output.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"list-backups output","$id":"http://schema.nethserver.org/cluster/list-backups-output.json","description":"Get a list of backup configurations","examples":[{"backups":[{"id":1,"name":"Daily","repository":"48ce000a-79b7-5fe6-8558-177fd70c27b4","schedule":"daily","schedule_hint":{},"retention":"7d","instances":[{"module_id":"dokuwiki1","ui_name":"","repository_path":"dokuwiki1@2f72561e-89b2-4cdc-b4e4-425ca23bbec9","status":{"total_size":4053660,"total_file_count":21744,"start":1640097808,"end":1640097815,"success":true}}],"enabled":true}],"unconfigured_instances":["nextcloud3"]}],"type":"object","required":["backups","unconfigured_instances"],"properties":{"backups":{"type":"array","title":"Backups","description":"List of configured backup objects","items":{"$ref":"#/$defs/backup-item"}},"unconfigured_instances":{"type":"array","title":"Unconfigured module instances","description":"List of module instances that are not included in any backup","items":{"$ref":"#/$defs/uinstance-item"}}},"$defs":{"uinstance-item":{"title":"Unconfigured module instance","description":"Instance with no backup configured","type":"object","properties":{"id":{"title":"Module ID","type":"string","minLength":1},"ui_name":{"title":"Module UI name","type":"string"}}},"instance-item":{"title":"Backup of a module instance","type":"object","properties":{"module_id":{"type":"string","minLength":1},"ui_name":{"type":"string"},"repository_path":{"type":"string","minLength":1},"status":{"$ref":"#/$defs/backup-status"}}},"backup-status":{"title":"Last backup run status","type":["null","object"]},"backup-item":{"title":"Backup object","type":"object","required":["id","instances","schedule","schedule_hint","repository","retention","name","enabled"],"properties":{"id":{"title":"Backup ID","type":"integer","minimum":1},"instances":{"title":"Module instances","description":"Identifiers of module instances included in the backup","type":"array","items":{"$ref":"#/$defs/instance-item"}},"schedule":{"title":"Time schedule expression","description":"The string format must be compatible with Calendar Events, described in `systemd.timer` man page","type":"string","minLength":1,"maxLength":64},"schedule_hint":{"title":"Schedule expression hint for UI","description":"Store arbitrary object to ease parsing of `schedule` value","type":"object"},"retention":{"title":"Backup retention","description":"Number of backup snapshots to store before automatic deletion","type":"integer","minimum":1},"name":{"title":"Backup name","type":"string","minLength":1},"enabled":{"type":"boolean","title":"Enabled/disabled status. If `false` the backup is stopped."}}}}}
diff --git a/core/list-backups-output.md b/core/list-backups-output.md
new file mode 100644
index 000000000..93e8f630d
--- /dev/null
+++ b/core/list-backups-output.md
@@ -0,0 +1,416 @@
+# list-backups output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-backups-output.json
+```
+
+Get a list of backup configurations
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [list-backups-output.json](cluster/list-backups-output.json "open original schema") |
+
+## list-backups output Type
+
+`object` ([list-backups output](list-backups-output.md))
+
+## list-backups output Examples
+
+```json
+{
+ "backups": [
+ {
+ "id": 1,
+ "name": "Daily",
+ "repository": "48ce000a-79b7-5fe6-8558-177fd70c27b4",
+ "schedule": "daily",
+ "schedule_hint": {},
+ "retention": "7d",
+ "instances": [
+ {
+ "module_id": "dokuwiki1",
+ "ui_name": "",
+ "repository_path": "dokuwiki1@2f72561e-89b2-4cdc-b4e4-425ca23bbec9",
+ "status": {
+ "total_size": 4053660,
+ "total_file_count": 21744,
+ "start": 1640097808,
+ "end": 1640097815,
+ "success": true
+ }
+ }
+ ],
+ "enabled": true
+ }
+ ],
+ "unconfigured_instances": [
+ "nextcloud3"
+ ]
+}
+```
+
+# list-backups output Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------------------------------- | :------ | :------- | :------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [backups](#backups) | `array` | Required | cannot be null | [list-backups output](list-backups-output-properties-backups.md "http://schema.nethserver.org/cluster/list-backups-output.json#/properties/backups") |
+| [unconfigured\_instances](#unconfigured_instances) | `array` | Required | cannot be null | [list-backups output](list-backups-output-properties-unconfigured-module-instances.md "http://schema.nethserver.org/cluster/list-backups-output.json#/properties/unconfigured_instances") |
+
+## backups
+
+List of configured backup objects
+
+`backups`
+
+* is required
+
+* Type: `object[]` ([Backup object](list-backups-output-defs-backup-object.md))
+
+* cannot be null
+
+* defined in: [list-backups output](list-backups-output-properties-backups.md "http://schema.nethserver.org/cluster/list-backups-output.json#/properties/backups")
+
+### backups Type
+
+`object[]` ([Backup object](list-backups-output-defs-backup-object.md))
+
+## unconfigured\_instances
+
+List of module instances that are not included in any backup
+
+`unconfigured_instances`
+
+* is required
+
+* Type: `object[]` ([Unconfigured module instance](list-backups-output-defs-unconfigured-module-instance.md))
+
+* cannot be null
+
+* defined in: [list-backups output](list-backups-output-properties-unconfigured-module-instances.md "http://schema.nethserver.org/cluster/list-backups-output.json#/properties/unconfigured_instances")
+
+### unconfigured\_instances Type
+
+`object[]` ([Unconfigured module instance](list-backups-output-defs-unconfigured-module-instance.md))
+
+# list-backups output Definitions
+
+## Definitions group uinstance-item
+
+Reference this group by using
+
+```json
+{"$ref":"http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/uinstance-item"}
+```
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------- | :------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [id](#id) | `string` | Optional | cannot be null | [list-backups output](list-backups-output-defs-unconfigured-module-instance-properties-module-id.md "http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/uinstance-item/properties/id") |
+| [ui\_name](#ui_name) | `string` | Optional | cannot be null | [list-backups output](list-backups-output-defs-unconfigured-module-instance-properties-module-ui-name.md "http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/uinstance-item/properties/ui_name") |
+
+### id
+
+
+
+`id`
+
+* is optional
+
+* Type: `string` ([Module ID](list-backups-output-defs-unconfigured-module-instance-properties-module-id.md))
+
+* cannot be null
+
+* defined in: [list-backups output](list-backups-output-defs-unconfigured-module-instance-properties-module-id.md "http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/uinstance-item/properties/id")
+
+#### id Type
+
+`string` ([Module ID](list-backups-output-defs-unconfigured-module-instance-properties-module-id.md))
+
+#### id Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+### ui\_name
+
+
+
+`ui_name`
+
+* is optional
+
+* Type: `string` ([Module UI name](list-backups-output-defs-unconfigured-module-instance-properties-module-ui-name.md))
+
+* cannot be null
+
+* defined in: [list-backups output](list-backups-output-defs-unconfigured-module-instance-properties-module-ui-name.md "http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/uinstance-item/properties/ui_name")
+
+#### ui\_name Type
+
+`string` ([Module UI name](list-backups-output-defs-unconfigured-module-instance-properties-module-ui-name.md))
+
+## Definitions group instance-item
+
+Reference this group by using
+
+```json
+{"$ref":"http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/instance-item"}
+```
+
+| Property | Type | Required | Nullable | Defined by |
+| :----------------------------------- | :------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| [module\_id](#module_id) | `string` | Optional | cannot be null | [list-backups output](list-backups-output-defs-backup-of-a-module-instance-properties-module_id.md "http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/instance-item/properties/module_id") |
+| [ui\_name](#ui_name-1) | `string` | Optional | cannot be null | [list-backups output](list-backups-output-defs-backup-of-a-module-instance-properties-ui_name.md "http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/instance-item/properties/ui_name") |
+| [repository\_path](#repository_path) | `string` | Optional | cannot be null | [list-backups output](list-backups-output-defs-backup-of-a-module-instance-properties-repository_path.md "http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/instance-item/properties/repository_path") |
+| [status](#status) | `object` | Optional | can be null | [list-backups output](list-backups-output-defs-backup-of-a-module-instance-properties-last-backup-run-status.md "http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/instance-item/properties/status") |
+
+### module\_id
+
+
+
+`module_id`
+
+* is optional
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-backups output](list-backups-output-defs-backup-of-a-module-instance-properties-module_id.md "http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/instance-item/properties/module_id")
+
+#### module\_id Type
+
+`string`
+
+#### module\_id Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+### ui\_name
+
+
+
+`ui_name`
+
+* is optional
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-backups output](list-backups-output-defs-backup-of-a-module-instance-properties-ui_name.md "http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/instance-item/properties/ui_name")
+
+#### ui\_name Type
+
+`string`
+
+### repository\_path
+
+
+
+`repository_path`
+
+* is optional
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-backups output](list-backups-output-defs-backup-of-a-module-instance-properties-repository_path.md "http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/instance-item/properties/repository_path")
+
+#### repository\_path Type
+
+`string`
+
+#### repository\_path Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+### status
+
+
+
+`status`
+
+* is optional
+
+* Type: `object` ([Last backup run status](list-backups-output-defs-backup-of-a-module-instance-properties-last-backup-run-status.md))
+
+* can be null
+
+* defined in: [list-backups output](list-backups-output-defs-backup-of-a-module-instance-properties-last-backup-run-status.md "http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/instance-item/properties/status")
+
+#### status Type
+
+`object` ([Last backup run status](list-backups-output-defs-backup-of-a-module-instance-properties-last-backup-run-status.md))
+
+## Definitions group backup-status
+
+Reference this group by using
+
+```json
+{"$ref":"http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/backup-status"}
+```
+
+| Property | Type | Required | Nullable | Defined by |
+| :------- | :--- | :------- | :------- | :--------- |
+
+## Definitions group backup-item
+
+Reference this group by using
+
+```json
+{"$ref":"http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/backup-item"}
+```
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------------- | :-------- | :------- | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [id](#id-1) | `integer` | Required | cannot be null | [list-backups output](list-backups-output-defs-backup-object-properties-backup-id.md "http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/backup-item/properties/id") |
+| [instances](#instances) | `array` | Required | cannot be null | [list-backups output](list-backups-output-defs-backup-object-properties-module-instances.md "http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/backup-item/properties/instances") |
+| [schedule](#schedule) | `string` | Required | cannot be null | [list-backups output](list-backups-output-defs-backup-object-properties-time-schedule-expression.md "http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/backup-item/properties/schedule") |
+| [schedule\_hint](#schedule_hint) | `object` | Required | cannot be null | [list-backups output](list-backups-output-defs-backup-object-properties-schedule-expression-hint-for-ui.md "http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/backup-item/properties/schedule_hint") |
+| [retention](#retention) | `integer` | Required | cannot be null | [list-backups output](list-backups-output-defs-backup-object-properties-backup-retention.md "http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/backup-item/properties/retention") |
+| [name](#name) | `string` | Required | cannot be null | [list-backups output](list-backups-output-defs-backup-object-properties-backup-name.md "http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/backup-item/properties/name") |
+| [enabled](#enabled) | `boolean` | Required | cannot be null | [list-backups output](list-backups-output-defs-backup-object-properties-enableddisabled-status-if-false-the-backup-is-stopped.md "http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/backup-item/properties/enabled") |
+
+### id
+
+
+
+`id`
+
+* is required
+
+* Type: `integer` ([Backup ID](list-backups-output-defs-backup-object-properties-backup-id.md))
+
+* cannot be null
+
+* defined in: [list-backups output](list-backups-output-defs-backup-object-properties-backup-id.md "http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/backup-item/properties/id")
+
+#### id Type
+
+`integer` ([Backup ID](list-backups-output-defs-backup-object-properties-backup-id.md))
+
+#### id Constraints
+
+**minimum**: the value of this number must greater than or equal to: `1`
+
+### instances
+
+Identifiers of module instances included in the backup
+
+`instances`
+
+* is required
+
+* Type: `object[]` ([Backup of a module instance](list-backups-output-defs-backup-of-a-module-instance.md))
+
+* cannot be null
+
+* defined in: [list-backups output](list-backups-output-defs-backup-object-properties-module-instances.md "http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/backup-item/properties/instances")
+
+#### instances Type
+
+`object[]` ([Backup of a module instance](list-backups-output-defs-backup-of-a-module-instance.md))
+
+### schedule
+
+The string format must be compatible with Calendar Events, described in `systemd.timer` man page
+
+`schedule`
+
+* is required
+
+* Type: `string` ([Time schedule expression](list-backups-output-defs-backup-object-properties-time-schedule-expression.md))
+
+* cannot be null
+
+* defined in: [list-backups output](list-backups-output-defs-backup-object-properties-time-schedule-expression.md "http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/backup-item/properties/schedule")
+
+#### schedule Type
+
+`string` ([Time schedule expression](list-backups-output-defs-backup-object-properties-time-schedule-expression.md))
+
+#### schedule Constraints
+
+**maximum length**: the maximum number of characters for this string is: `64`
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+### schedule\_hint
+
+Store arbitrary object to ease parsing of `schedule` value
+
+`schedule_hint`
+
+* is required
+
+* Type: `object` ([Schedule expression hint for UI](list-backups-output-defs-backup-object-properties-schedule-expression-hint-for-ui.md))
+
+* cannot be null
+
+* defined in: [list-backups output](list-backups-output-defs-backup-object-properties-schedule-expression-hint-for-ui.md "http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/backup-item/properties/schedule_hint")
+
+#### schedule\_hint Type
+
+`object` ([Schedule expression hint for UI](list-backups-output-defs-backup-object-properties-schedule-expression-hint-for-ui.md))
+
+### retention
+
+Number of backup snapshots to store before automatic deletion
+
+`retention`
+
+* is required
+
+* Type: `integer` ([Backup retention](list-backups-output-defs-backup-object-properties-backup-retention.md))
+
+* cannot be null
+
+* defined in: [list-backups output](list-backups-output-defs-backup-object-properties-backup-retention.md "http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/backup-item/properties/retention")
+
+#### retention Type
+
+`integer` ([Backup retention](list-backups-output-defs-backup-object-properties-backup-retention.md))
+
+#### retention Constraints
+
+**minimum**: the value of this number must greater than or equal to: `1`
+
+### name
+
+
+
+`name`
+
+* is required
+
+* Type: `string` ([Backup name](list-backups-output-defs-backup-object-properties-backup-name.md))
+
+* cannot be null
+
+* defined in: [list-backups output](list-backups-output-defs-backup-object-properties-backup-name.md "http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/backup-item/properties/name")
+
+#### name Type
+
+`string` ([Backup name](list-backups-output-defs-backup-object-properties-backup-name.md))
+
+#### name Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+### enabled
+
+
+
+`enabled`
+
+* is required
+
+* Type: `boolean` ([Enabled/disabled status. If \`false\` the backup is stopped.](list-backups-output-defs-backup-object-properties-enableddisabled-status-if-false-the-backup-is-stopped.md))
+
+* cannot be null
+
+* defined in: [list-backups output](list-backups-output-defs-backup-object-properties-enableddisabled-status-if-false-the-backup-is-stopped.md "http://schema.nethserver.org/cluster/list-backups-output.json#/$defs/backup-item/properties/enabled")
+
+#### enabled Type
+
+`boolean` ([Enabled/disabled status. If \`false\` the backup is stopped.](list-backups-output-defs-backup-object-properties-enableddisabled-status-if-false-the-backup-is-stopped.md))
diff --git a/core/list-cluster-backup-repositories-output-properties-endpoints-items-properties-ui_label.md b/core/list-cluster-backup-repositories-output-properties-endpoints-items-properties-ui_label.md
new file mode 100644
index 000000000..d715b7680
--- /dev/null
+++ b/core/list-cluster-backup-repositories-output-properties-endpoints-items-properties-ui_label.md
@@ -0,0 +1,15 @@
+# Untitled string in list-cluster-backup-repositories output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-cluster-backup-repositories-output.json#/properties/endpoints/items/properties/ui_label
+```
+
+Display label
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-cluster-backup-repositories-output.json\*](cluster/list-cluster-backup-repositories-output.json "open original schema") |
+
+## ui\_label Type
+
+`string`
diff --git a/core/list-cluster-backup-repositories-output-properties-endpoints-items-properties-url.md b/core/list-cluster-backup-repositories-output-properties-endpoints-items-properties-url.md
new file mode 100644
index 000000000..ffd48111f
--- /dev/null
+++ b/core/list-cluster-backup-repositories-output-properties-endpoints-items-properties-url.md
@@ -0,0 +1,15 @@
+# Untitled string in list-cluster-backup-repositories output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-cluster-backup-repositories-output.json#/properties/endpoints/items/properties/url
+```
+
+rclone-like URL of the repository. See rclone-wrapper for details. The format must be valid input for the add-backup-repository action
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-cluster-backup-repositories-output.json\*](cluster/list-cluster-backup-repositories-output.json "open original schema") |
+
+## url Type
+
+`string`
diff --git a/core/list-cluster-backup-repositories-output-properties-endpoints-items.md b/core/list-cluster-backup-repositories-output-properties-endpoints-items.md
new file mode 100644
index 000000000..1294c0d3d
--- /dev/null
+++ b/core/list-cluster-backup-repositories-output-properties-endpoints-items.md
@@ -0,0 +1,58 @@
+# Untitled object in list-cluster-backup-repositories output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-cluster-backup-repositories-output.json#/properties/endpoints/items
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [list-cluster-backup-repositories-output.json\*](cluster/list-cluster-backup-repositories-output.json "open original schema") |
+
+## items Type
+
+`object` ([Details](list-cluster-backup-repositories-output-properties-endpoints-items.md))
+
+# items Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :--------------------- | :------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [ui\_label](#ui_label) | `string` | Required | cannot be null | [list-cluster-backup-repositories output](list-cluster-backup-repositories-output-properties-endpoints-items-properties-ui_label.md "http://schema.nethserver.org/cluster/list-cluster-backup-repositories-output.json#/properties/endpoints/items/properties/ui_label") |
+| [url](#url) | `string` | Required | cannot be null | [list-cluster-backup-repositories output](list-cluster-backup-repositories-output-properties-endpoints-items-properties-url.md "http://schema.nethserver.org/cluster/list-cluster-backup-repositories-output.json#/properties/endpoints/items/properties/url") |
+
+## ui\_label
+
+Display label
+
+`ui_label`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-cluster-backup-repositories output](list-cluster-backup-repositories-output-properties-endpoints-items-properties-ui_label.md "http://schema.nethserver.org/cluster/list-cluster-backup-repositories-output.json#/properties/endpoints/items/properties/ui_label")
+
+### ui\_label Type
+
+`string`
+
+## url
+
+rclone-like URL of the repository. See rclone-wrapper for details. The format must be valid input for the add-backup-repository action
+
+`url`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-cluster-backup-repositories output](list-cluster-backup-repositories-output-properties-endpoints-items-properties-url.md "http://schema.nethserver.org/cluster/list-cluster-backup-repositories-output.json#/properties/endpoints/items/properties/url")
+
+### url Type
+
+`string`
diff --git a/core/list-cluster-backup-repositories-output-properties-endpoints.md b/core/list-cluster-backup-repositories-output-properties-endpoints.md
new file mode 100644
index 000000000..940957c54
--- /dev/null
+++ b/core/list-cluster-backup-repositories-output-properties-endpoints.md
@@ -0,0 +1,15 @@
+# Untitled array in list-cluster-backup-repositories output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-cluster-backup-repositories-output.json#/properties/endpoints
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-cluster-backup-repositories-output.json\*](cluster/list-cluster-backup-repositories-output.json "open original schema") |
+
+## endpoints Type
+
+`object[]` ([Details](list-cluster-backup-repositories-output-properties-endpoints-items.md))
diff --git a/core/list-cluster-backup-repositories-output.json b/core/list-cluster-backup-repositories-output.json
new file mode 100644
index 000000000..7b1385c8c
--- /dev/null
+++ b/core/list-cluster-backup-repositories-output.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"list-cluster-backup-repositories output","$id":"http://schema.nethserver.org/cluster/list-cluster-backup-repositories-output.json","description":"Get the list backup repository endpoints provided by cluster nodes","examples":[{"endpoints":[{"ui_label":"Node 1","url":"webdav:http://10.5.4.1:4694"}]}],"type":"object","required":["endpoints"],"properties":{"endpoints":{"type":"array","items":{"type":"object","required":["ui_label","url"],"properties":{"ui_label":{"type":"string","description":"Display label"},"url":{"type":"string","description":"rclone-like URL of the repository. See rclone-wrapper for details. The format must be valid input for the add-backup-repository action"}}}}}}
diff --git a/core/list-cluster-backup-repositories-output.md b/core/list-cluster-backup-repositories-output.md
new file mode 100644
index 000000000..dd1430ca4
--- /dev/null
+++ b/core/list-cluster-backup-repositories-output.md
@@ -0,0 +1,52 @@
+# list-cluster-backup-repositories output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-cluster-backup-repositories-output.json
+```
+
+Get the list backup repository endpoints provided by cluster nodes
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [list-cluster-backup-repositories-output.json](cluster/list-cluster-backup-repositories-output.json "open original schema") |
+
+## list-cluster-backup-repositories output Type
+
+`object` ([list-cluster-backup-repositories output](list-cluster-backup-repositories-output.md))
+
+## list-cluster-backup-repositories output Examples
+
+```json
+{
+ "endpoints": [
+ {
+ "ui_label": "Node 1",
+ "url": "webdav:http://10.5.4.1:4694"
+ }
+ ]
+}
+```
+
+# list-cluster-backup-repositories output Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :---------------------- | :------ | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [endpoints](#endpoints) | `array` | Required | cannot be null | [list-cluster-backup-repositories output](list-cluster-backup-repositories-output-properties-endpoints.md "http://schema.nethserver.org/cluster/list-cluster-backup-repositories-output.json#/properties/endpoints") |
+
+## endpoints
+
+
+
+`endpoints`
+
+* is required
+
+* Type: `object[]` ([Details](list-cluster-backup-repositories-output-properties-endpoints-items.md))
+
+* cannot be null
+
+* defined in: [list-cluster-backup-repositories output](list-cluster-backup-repositories-output-properties-endpoints.md "http://schema.nethserver.org/cluster/list-cluster-backup-repositories-output.json#/properties/endpoints")
+
+### endpoints Type
+
+`object[]` ([Details](list-cluster-backup-repositories-output-properties-endpoints-items.md))
diff --git a/core/list-core-modules-output-items-properties-instances-items-properties-id.md b/core/list-core-modules-output-items-properties-instances-items-properties-id.md
new file mode 100644
index 000000000..f25b7e417
--- /dev/null
+++ b/core/list-core-modules-output-items-properties-instances-items-properties-id.md
@@ -0,0 +1,15 @@
+# Untitled string in list-core-modules output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-core-modules-output.json#/items/properties/instances/items/properties/id
+```
+
+Instance id
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-core-modules-output.json\*](cluster/list-core-modules-output.json "open original schema") |
+
+## id Type
+
+`string`
diff --git a/core/list-core-modules-output-items-properties-instances-items-properties-update.md b/core/list-core-modules-output-items-properties-instances-items-properties-update.md
new file mode 100644
index 000000000..b75652238
--- /dev/null
+++ b/core/list-core-modules-output-items-properties-instances-items-properties-update.md
@@ -0,0 +1,15 @@
+# Untitled string in list-core-modules output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-core-modules-output.json#/items/properties/instances/items/properties/update
+```
+
+Available version update, can be empty
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-core-modules-output.json\*](cluster/list-core-modules-output.json "open original schema") |
+
+## update Type
+
+`string`
diff --git a/core/list-core-modules-output-items-properties-instances-items-properties-version.md b/core/list-core-modules-output-items-properties-instances-items-properties-version.md
new file mode 100644
index 000000000..0ae51e040
--- /dev/null
+++ b/core/list-core-modules-output-items-properties-instances-items-properties-version.md
@@ -0,0 +1,15 @@
+# Untitled string in list-core-modules output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-core-modules-output.json#/items/properties/instances/items/properties/version
+```
+
+Installed version
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-core-modules-output.json\*](cluster/list-core-modules-output.json "open original schema") |
+
+## version Type
+
+`string`
diff --git a/core/list-core-modules-output-items-properties-instances-items.md b/core/list-core-modules-output-items-properties-instances-items.md
new file mode 100644
index 000000000..38ec9da76
--- /dev/null
+++ b/core/list-core-modules-output-items-properties-instances-items.md
@@ -0,0 +1,77 @@
+# Untitled object in list-core-modules output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-core-modules-output.json#/items/properties/instances/items
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [list-core-modules-output.json\*](cluster/list-core-modules-output.json "open original schema") |
+
+## items Type
+
+`object` ([Details](list-core-modules-output-items-properties-instances-items.md))
+
+# items Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------ | :------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| [id](#id) | `string` | Required | cannot be null | [list-core-modules output](list-core-modules-output-items-properties-instances-items-properties-id.md "http://schema.nethserver.org/cluster/list-core-modules-output.json#/items/properties/instances/items/properties/id") |
+| [version](#version) | `string` | Required | cannot be null | [list-core-modules output](list-core-modules-output-items-properties-instances-items-properties-version.md "http://schema.nethserver.org/cluster/list-core-modules-output.json#/items/properties/instances/items/properties/version") |
+| [update](#update) | `string` | Required | cannot be null | [list-core-modules output](list-core-modules-output-items-properties-instances-items-properties-update.md "http://schema.nethserver.org/cluster/list-core-modules-output.json#/items/properties/instances/items/properties/update") |
+
+## id
+
+Instance id
+
+`id`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-core-modules output](list-core-modules-output-items-properties-instances-items-properties-id.md "http://schema.nethserver.org/cluster/list-core-modules-output.json#/items/properties/instances/items/properties/id")
+
+### id Type
+
+`string`
+
+## version
+
+Installed version
+
+`version`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-core-modules output](list-core-modules-output-items-properties-instances-items-properties-version.md "http://schema.nethserver.org/cluster/list-core-modules-output.json#/items/properties/instances/items/properties/version")
+
+### version Type
+
+`string`
+
+## update
+
+Available version update, can be empty
+
+`update`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-core-modules output](list-core-modules-output-items-properties-instances-items-properties-update.md "http://schema.nethserver.org/cluster/list-core-modules-output.json#/items/properties/instances/items/properties/update")
+
+### update Type
+
+`string`
diff --git a/core/list-core-modules-output-items-properties-instances.md b/core/list-core-modules-output-items-properties-instances.md
new file mode 100644
index 000000000..9845e026f
--- /dev/null
+++ b/core/list-core-modules-output-items-properties-instances.md
@@ -0,0 +1,15 @@
+# Untitled array in list-core-modules output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-core-modules-output.json#/items/properties/instances
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-core-modules-output.json\*](cluster/list-core-modules-output.json "open original schema") |
+
+## instances Type
+
+`object[]` ([Details](list-core-modules-output-items-properties-instances-items.md))
diff --git a/core/list-core-modules-output-items-properties-name.md b/core/list-core-modules-output-items-properties-name.md
new file mode 100644
index 000000000..28ebf8a85
--- /dev/null
+++ b/core/list-core-modules-output-items-properties-name.md
@@ -0,0 +1,15 @@
+# Untitled string in list-core-modules output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-core-modules-output.json#/items/properties/name
+```
+
+Unique name of a package
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-core-modules-output.json\*](cluster/list-core-modules-output.json "open original schema") |
+
+## name Type
+
+`string`
diff --git a/core/list-core-modules-output-items.md b/core/list-core-modules-output-items.md
new file mode 100644
index 000000000..62af8a9b1
--- /dev/null
+++ b/core/list-core-modules-output-items.md
@@ -0,0 +1,58 @@
+# Untitled object in list-core-modules output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-core-modules-output.json#/items
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [list-core-modules-output.json\*](cluster/list-core-modules-output.json "open original schema") |
+
+## items Type
+
+`object` ([Details](list-core-modules-output-items.md))
+
+# items Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :---------------------- | :------- | :------- | :------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [name](#name) | `string` | Required | cannot be null | [list-core-modules output](list-core-modules-output-items-properties-name.md "http://schema.nethserver.org/cluster/list-core-modules-output.json#/items/properties/name") |
+| [instances](#instances) | `array` | Required | cannot be null | [list-core-modules output](list-core-modules-output-items-properties-instances.md "http://schema.nethserver.org/cluster/list-core-modules-output.json#/items/properties/instances") |
+
+## name
+
+Unique name of a package
+
+`name`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-core-modules output](list-core-modules-output-items-properties-name.md "http://schema.nethserver.org/cluster/list-core-modules-output.json#/items/properties/name")
+
+### name Type
+
+`string`
+
+## instances
+
+
+
+`instances`
+
+* is required
+
+* Type: `object[]` ([Details](list-core-modules-output-items-properties-instances-items.md))
+
+* cannot be null
+
+* defined in: [list-core-modules output](list-core-modules-output-items-properties-instances.md "http://schema.nethserver.org/cluster/list-core-modules-output.json#/items/properties/instances")
+
+### instances Type
+
+`object[]` ([Details](list-core-modules-output-items-properties-instances-items.md))
diff --git a/core/list-core-modules-output.json b/core/list-core-modules-output.json
new file mode 100644
index 000000000..0131a625f
--- /dev/null
+++ b/core/list-core-modules-output.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"list-core-modules output","description":"List core modules output","$id":"http://schema.nethserver.org/cluster/list-core-modules-output.json","examples":[[{"name":"core","instances":[{"id":"core","version":"updates_from_repo","update":""}]},{"name":"promtail","instances":[{"id":"promtail1","version":"latest","update":""}]},{"name":"traefik","instances":[{"id":"traefik1","version":"0.0.1","update":""}]},{"name":"loki","instances":[{"id":"loki1","version":"latest","update":""},{"id":"loki2","version":"0.0.1-alpha1","update":"0.0.1"}]},{"name":"ldapproxy","instances":[{"id":"ldapproxy1","version":"latest","update":""}]}]],"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Unique name of a package"},"instances":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Instance id"},"version":{"type":"string","description":"Installed version"},"update":{"type":"string","description":"Available version update, can be empty"}},"required":["id","version","update"]}}},"required":["name","instances"]}}
diff --git a/core/list-core-modules-output.md b/core/list-core-modules-output.md
new file mode 100644
index 000000000..1347d266e
--- /dev/null
+++ b/core/list-core-modules-output.md
@@ -0,0 +1,77 @@
+# list-core-modules output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-core-modules-output.json
+```
+
+List core modules output
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-core-modules-output.json](cluster/list-core-modules-output.json "open original schema") |
+
+## list-core-modules output Type
+
+`object[]` ([Details](list-core-modules-output-items.md))
+
+## list-core-modules output Examples
+
+```json
+[
+ {
+ "name": "core",
+ "instances": [
+ {
+ "id": "core",
+ "version": "updates_from_repo",
+ "update": ""
+ }
+ ]
+ },
+ {
+ "name": "promtail",
+ "instances": [
+ {
+ "id": "promtail1",
+ "version": "latest",
+ "update": ""
+ }
+ ]
+ },
+ {
+ "name": "traefik",
+ "instances": [
+ {
+ "id": "traefik1",
+ "version": "0.0.1",
+ "update": ""
+ }
+ ]
+ },
+ {
+ "name": "loki",
+ "instances": [
+ {
+ "id": "loki1",
+ "version": "latest",
+ "update": ""
+ },
+ {
+ "id": "loki2",
+ "version": "0.0.1-alpha1",
+ "update": "0.0.1"
+ }
+ ]
+ },
+ {
+ "name": "ldapproxy",
+ "instances": [
+ {
+ "id": "ldapproxy1",
+ "version": "latest",
+ "update": ""
+ }
+ ]
+ }
+]
+```
diff --git a/core/list-domain-groups-input-properties-domain-name.md b/core/list-domain-groups-input-properties-domain-name.md
new file mode 100644
index 000000000..0ab8d59a4
--- /dev/null
+++ b/core/list-domain-groups-input-properties-domain-name.md
@@ -0,0 +1,19 @@
+# Domain name Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-domain-groups-input.json#/properties/domain
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-domain-groups-input.json\*](cluster/list-domain-groups-input.json "open original schema") |
+
+## domain Type
+
+`string` ([Domain name](list-domain-groups-input-properties-domain-name.md))
+
+## domain Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/list-domain-groups-input.json b/core/list-domain-groups-input.json
new file mode 100644
index 000000000..06a6a9688
--- /dev/null
+++ b/core/list-domain-groups-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"list-domain-groups input","description":"List groups of a given accounts domain","$id":"http://schema.nethserver.org/cluster/list-domain-groups-input.json","examples":[{"domain":"dom.test"}],"type":"object","required":["domain"],"properties":{"domain":{"type":"string","title":"Domain name","minLength":1}}}
diff --git a/core/list-domain-groups-input.md b/core/list-domain-groups-input.md
new file mode 100644
index 000000000..69d7d2f2f
--- /dev/null
+++ b/core/list-domain-groups-input.md
@@ -0,0 +1,51 @@
+# list-domain-groups input Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-domain-groups-input.json
+```
+
+List groups of a given accounts domain
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [list-domain-groups-input.json](cluster/list-domain-groups-input.json "open original schema") |
+
+## list-domain-groups input Type
+
+`object` ([list-domain-groups input](list-domain-groups-input.md))
+
+## list-domain-groups input Examples
+
+```json
+{
+ "domain": "dom.test"
+}
+```
+
+# list-domain-groups input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :---------------- | :------- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [domain](#domain) | `string` | Required | cannot be null | [list-domain-groups input](list-domain-groups-input-properties-domain-name.md "http://schema.nethserver.org/cluster/list-domain-groups-input.json#/properties/domain") |
+
+## domain
+
+
+
+`domain`
+
+* is required
+
+* Type: `string` ([Domain name](list-domain-groups-input-properties-domain-name.md))
+
+* cannot be null
+
+* defined in: [list-domain-groups input](list-domain-groups-input-properties-domain-name.md "http://schema.nethserver.org/cluster/list-domain-groups-input.json#/properties/domain")
+
+### domain Type
+
+`string` ([Domain name](list-domain-groups-input-properties-domain-name.md))
+
+### domain Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/list-domain-groups-output-defs-group-descriptor-properties-description.md b/core/list-domain-groups-output-defs-group-descriptor-properties-description.md
new file mode 100644
index 000000000..3ea633913
--- /dev/null
+++ b/core/list-domain-groups-output-defs-group-descriptor-properties-description.md
@@ -0,0 +1,15 @@
+# Description Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-domain-groups-output.json#/$defs/group/properties/description
+```
+
+A brief description of the group purpose
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-domain-groups-output.json\*](cluster/list-domain-groups-output.json "open original schema") |
+
+## description Type
+
+`string` ([Description](list-domain-groups-output-defs-group-descriptor-properties-description.md))
diff --git a/core/list-domain-groups-output-defs-group-descriptor-properties-group-members-member-name.md b/core/list-domain-groups-output-defs-group-descriptor-properties-group-members-member-name.md
new file mode 100644
index 000000000..d5e8174db
--- /dev/null
+++ b/core/list-domain-groups-output-defs-group-descriptor-properties-group-members-member-name.md
@@ -0,0 +1,15 @@
+# Member name Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-domain-groups-output.json#/$defs/group/properties/users/items
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-domain-groups-output.json\*](cluster/list-domain-groups-output.json "open original schema") |
+
+## items Type
+
+`string` ([Member name](list-domain-groups-output-defs-group-descriptor-properties-group-members-member-name.md))
diff --git a/core/list-domain-groups-output-defs-group-descriptor-properties-group-members.md b/core/list-domain-groups-output-defs-group-descriptor-properties-group-members.md
new file mode 100644
index 000000000..76e7b3ae8
--- /dev/null
+++ b/core/list-domain-groups-output-defs-group-descriptor-properties-group-members.md
@@ -0,0 +1,15 @@
+# Group members Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-domain-groups-output.json#/$defs/group/properties/users
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-domain-groups-output.json\*](cluster/list-domain-groups-output.json "open original schema") |
+
+## users Type
+
+`string[]` ([Member name](list-domain-groups-output-defs-group-descriptor-properties-group-members-member-name.md))
diff --git a/core/list-domain-groups-output-defs-group-descriptor-properties-group.md b/core/list-domain-groups-output-defs-group-descriptor-properties-group.md
new file mode 100644
index 000000000..7029b52cc
--- /dev/null
+++ b/core/list-domain-groups-output-defs-group-descriptor-properties-group.md
@@ -0,0 +1,19 @@
+# Untitled string in list-domain-groups output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-domain-groups-output.json#/$defs/group/properties/group
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-domain-groups-output.json\*](cluster/list-domain-groups-output.json "open original schema") |
+
+## group Type
+
+`string`
+
+## group Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/list-domain-groups-output-defs-group-descriptor.md b/core/list-domain-groups-output-defs-group-descriptor.md
new file mode 100644
index 000000000..202fabfcc
--- /dev/null
+++ b/core/list-domain-groups-output-defs-group-descriptor.md
@@ -0,0 +1,81 @@
+# Group descriptor Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-domain-groups-output.json#/$defs/group
+```
+
+Basic description of a group: name and description
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [list-domain-groups-output.json\*](cluster/list-domain-groups-output.json "open original schema") |
+
+## group Type
+
+`object` ([Group descriptor](list-domain-groups-output-defs-group-descriptor.md))
+
+# group Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :-------------------------- | :------- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [group](#group) | `string` | Required | cannot be null | [list-domain-groups output](list-domain-groups-output-defs-group-descriptor-properties-group.md "http://schema.nethserver.org/cluster/list-domain-groups-output.json#/$defs/group/properties/group") |
+| [description](#description) | `string` | Required | cannot be null | [list-domain-groups output](list-domain-groups-output-defs-group-descriptor-properties-description.md "http://schema.nethserver.org/cluster/list-domain-groups-output.json#/$defs/group/properties/description") |
+| [users](#users) | `array` | Optional | cannot be null | [list-domain-groups output](list-domain-groups-output-defs-group-descriptor-properties-group-members.md "http://schema.nethserver.org/cluster/list-domain-groups-output.json#/$defs/group/properties/users") |
+
+## group
+
+
+
+`group`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-domain-groups output](list-domain-groups-output-defs-group-descriptor-properties-group.md "http://schema.nethserver.org/cluster/list-domain-groups-output.json#/$defs/group/properties/group")
+
+### group Type
+
+`string`
+
+### group Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## description
+
+A brief description of the group purpose
+
+`description`
+
+* is required
+
+* Type: `string` ([Description](list-domain-groups-output-defs-group-descriptor-properties-description.md))
+
+* cannot be null
+
+* defined in: [list-domain-groups output](list-domain-groups-output-defs-group-descriptor-properties-description.md "http://schema.nethserver.org/cluster/list-domain-groups-output.json#/$defs/group/properties/description")
+
+### description Type
+
+`string` ([Description](list-domain-groups-output-defs-group-descriptor-properties-description.md))
+
+## users
+
+
+
+`users`
+
+* is optional
+
+* Type: `string[]` ([Member name](list-domain-groups-output-defs-group-descriptor-properties-group-members-member-name.md))
+
+* cannot be null
+
+* defined in: [list-domain-groups output](list-domain-groups-output-defs-group-descriptor-properties-group-members.md "http://schema.nethserver.org/cluster/list-domain-groups-output.json#/$defs/group/properties/users")
+
+### users Type
+
+`string[]` ([Member name](list-domain-groups-output-defs-group-descriptor-properties-group-members-member-name.md))
diff --git a/core/list-domain-groups-output-defs.md b/core/list-domain-groups-output-defs.md
new file mode 100644
index 000000000..281d294f9
--- /dev/null
+++ b/core/list-domain-groups-output-defs.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in list-domain-groups output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-domain-groups-output.json#/$defs
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-domain-groups-output.json\*](cluster/list-domain-groups-output.json "open original schema") |
+
+## $defs Type
+
+unknown
diff --git a/core/list-domain-groups-output-properties-groups.md b/core/list-domain-groups-output-properties-groups.md
new file mode 100644
index 000000000..90ecd3651
--- /dev/null
+++ b/core/list-domain-groups-output-properties-groups.md
@@ -0,0 +1,15 @@
+# Untitled array in list-domain-groups output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-domain-groups-output.json#/properties/groups
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-domain-groups-output.json\*](cluster/list-domain-groups-output.json "open original schema") |
+
+## groups Type
+
+`object[]` ([Group descriptor](list-domain-groups-output-defs-group-descriptor.md))
diff --git a/core/list-domain-groups-output.json b/core/list-domain-groups-output.json
new file mode 100644
index 000000000..f0593b2dc
--- /dev/null
+++ b/core/list-domain-groups-output.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"list-domain-groups output","description":"List groups of a given accounts domain","$id":"http://schema.nethserver.org/cluster/list-domain-groups-output.json","examples":[{"groups":[{"group":"Domain Admins","description":"Designated administrators of the domain","users":["Administrator"]}]}],"type":"object","required":["groups"],"properties":{"groups":{"type":"array","items":{"$ref":"#/$defs/group"}}},"$defs":{"group":{"title":"Group descriptor","description":"Basic description of a group: name and description","type":"object","required":["group","description"],"properties":{"group":{"type":"string","minLength":1},"description":{"type":"string","title":"Description","description":"A brief description of the group purpose"},"users":{"title":"Group members","type":"array","items":{"title":"Member name","type":"string"}}}}}}
diff --git a/core/list-domain-groups-output.md b/core/list-domain-groups-output.md
new file mode 100644
index 000000000..d0f883a6a
--- /dev/null
+++ b/core/list-domain-groups-output.md
@@ -0,0 +1,129 @@
+# list-domain-groups output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-domain-groups-output.json
+```
+
+List groups of a given accounts domain
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [list-domain-groups-output.json](cluster/list-domain-groups-output.json "open original schema") |
+
+## list-domain-groups output Type
+
+`object` ([list-domain-groups output](list-domain-groups-output.md))
+
+## list-domain-groups output Examples
+
+```json
+{
+ "groups": [
+ {
+ "group": "Domain Admins",
+ "description": "Designated administrators of the domain",
+ "users": [
+ "Administrator"
+ ]
+ }
+ ]
+}
+```
+
+# list-domain-groups output Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :---------------- | :------ | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [groups](#groups) | `array` | Required | cannot be null | [list-domain-groups output](list-domain-groups-output-properties-groups.md "http://schema.nethserver.org/cluster/list-domain-groups-output.json#/properties/groups") |
+
+## groups
+
+
+
+`groups`
+
+* is required
+
+* Type: `object[]` ([Group descriptor](list-domain-groups-output-defs-group-descriptor.md))
+
+* cannot be null
+
+* defined in: [list-domain-groups output](list-domain-groups-output-properties-groups.md "http://schema.nethserver.org/cluster/list-domain-groups-output.json#/properties/groups")
+
+### groups Type
+
+`object[]` ([Group descriptor](list-domain-groups-output-defs-group-descriptor.md))
+
+# list-domain-groups output Definitions
+
+## Definitions group group
+
+Reference this group by using
+
+```json
+{"$ref":"http://schema.nethserver.org/cluster/list-domain-groups-output.json#/$defs/group"}
+```
+
+| Property | Type | Required | Nullable | Defined by |
+| :-------------------------- | :------- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [group](#group) | `string` | Required | cannot be null | [list-domain-groups output](list-domain-groups-output-defs-group-descriptor-properties-group.md "http://schema.nethserver.org/cluster/list-domain-groups-output.json#/$defs/group/properties/group") |
+| [description](#description) | `string` | Required | cannot be null | [list-domain-groups output](list-domain-groups-output-defs-group-descriptor-properties-description.md "http://schema.nethserver.org/cluster/list-domain-groups-output.json#/$defs/group/properties/description") |
+| [users](#users) | `array` | Optional | cannot be null | [list-domain-groups output](list-domain-groups-output-defs-group-descriptor-properties-group-members.md "http://schema.nethserver.org/cluster/list-domain-groups-output.json#/$defs/group/properties/users") |
+
+### group
+
+
+
+`group`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-domain-groups output](list-domain-groups-output-defs-group-descriptor-properties-group.md "http://schema.nethserver.org/cluster/list-domain-groups-output.json#/$defs/group/properties/group")
+
+#### group Type
+
+`string`
+
+#### group Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+### description
+
+A brief description of the group purpose
+
+`description`
+
+* is required
+
+* Type: `string` ([Description](list-domain-groups-output-defs-group-descriptor-properties-description.md))
+
+* cannot be null
+
+* defined in: [list-domain-groups output](list-domain-groups-output-defs-group-descriptor-properties-description.md "http://schema.nethserver.org/cluster/list-domain-groups-output.json#/$defs/group/properties/description")
+
+#### description Type
+
+`string` ([Description](list-domain-groups-output-defs-group-descriptor-properties-description.md))
+
+### users
+
+
+
+`users`
+
+* is optional
+
+* Type: `string[]` ([Member name](list-domain-groups-output-defs-group-descriptor-properties-group-members-member-name.md))
+
+* cannot be null
+
+* defined in: [list-domain-groups output](list-domain-groups-output-defs-group-descriptor-properties-group-members.md "http://schema.nethserver.org/cluster/list-domain-groups-output.json#/$defs/group/properties/users")
+
+#### users Type
+
+`string[]` ([Member name](list-domain-groups-output-defs-group-descriptor-properties-group-members-member-name.md))
diff --git a/core/list-domain-users-input-properties-domain-name.md b/core/list-domain-users-input-properties-domain-name.md
new file mode 100644
index 000000000..c78e3b3f2
--- /dev/null
+++ b/core/list-domain-users-input-properties-domain-name.md
@@ -0,0 +1,19 @@
+# Domain name Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-domain-users-input.json#/properties/domain
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-domain-users-input.json\*](cluster/list-domain-users-input.json "open original schema") |
+
+## domain Type
+
+`string` ([Domain name](list-domain-users-input-properties-domain-name.md))
+
+## domain Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/list-domain-users-input.json b/core/list-domain-users-input.json
new file mode 100644
index 000000000..f65fcf71a
--- /dev/null
+++ b/core/list-domain-users-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"list-domain-users input","description":"List users of a given accounts domain","$id":"http://schema.nethserver.org/cluster/list-domain-users-input.json","examples":[{"domain":"dom.test"}],"type":"object","required":["domain"],"properties":{"domain":{"type":"string","title":"Domain name","minLength":1}}}
diff --git a/core/list-domain-users-input.md b/core/list-domain-users-input.md
new file mode 100644
index 000000000..b67efc93d
--- /dev/null
+++ b/core/list-domain-users-input.md
@@ -0,0 +1,51 @@
+# list-domain-users input Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-domain-users-input.json
+```
+
+List users of a given accounts domain
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [list-domain-users-input.json](cluster/list-domain-users-input.json "open original schema") |
+
+## list-domain-users input Type
+
+`object` ([list-domain-users input](list-domain-users-input.md))
+
+## list-domain-users input Examples
+
+```json
+{
+ "domain": "dom.test"
+}
+```
+
+# list-domain-users input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :---------------- | :------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| [domain](#domain) | `string` | Required | cannot be null | [list-domain-users input](list-domain-users-input-properties-domain-name.md "http://schema.nethserver.org/cluster/list-domain-users-input.json#/properties/domain") |
+
+## domain
+
+
+
+`domain`
+
+* is required
+
+* Type: `string` ([Domain name](list-domain-users-input-properties-domain-name.md))
+
+* cannot be null
+
+* defined in: [list-domain-users input](list-domain-users-input-properties-domain-name.md "http://schema.nethserver.org/cluster/list-domain-users-input.json#/properties/domain")
+
+### domain Type
+
+`string` ([Domain name](list-domain-users-input-properties-domain-name.md))
+
+### domain Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/list-domain-users-output-defs-a-user-descriptor-properties-display-name.md b/core/list-domain-users-output-defs-a-user-descriptor-properties-display-name.md
new file mode 100644
index 000000000..d6c1dccf8
--- /dev/null
+++ b/core/list-domain-users-output-defs-a-user-descriptor-properties-display-name.md
@@ -0,0 +1,15 @@
+# Display name Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-domain-users-output.json#/$defs/user/properties/display_name
+```
+
+Preferred name of a person to be used when displaying entries (RFC 2798/2.3)
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-domain-users-output.json\*](cluster/list-domain-users-output.json "open original schema") |
+
+## display\_name Type
+
+`string` ([Display name](list-domain-users-output-defs-a-user-descriptor-properties-display-name.md))
diff --git a/core/list-domain-users-output-defs-a-user-descriptor-properties-locked.md b/core/list-domain-users-output-defs-a-user-descriptor-properties-locked.md
new file mode 100644
index 000000000..8b8176cdb
--- /dev/null
+++ b/core/list-domain-users-output-defs-a-user-descriptor-properties-locked.md
@@ -0,0 +1,15 @@
+# Locked Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-domain-users-output.json#/$defs/user/properties/locked
+```
+
+True, if the user account has been locked, preventing the user from logging in
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-domain-users-output.json\*](cluster/list-domain-users-output.json "open original schema") |
+
+## locked Type
+
+`boolean` ([Locked](list-domain-users-output-defs-a-user-descriptor-properties-locked.md))
diff --git a/core/list-domain-users-output-defs-a-user-descriptor-properties-user.md b/core/list-domain-users-output-defs-a-user-descriptor-properties-user.md
new file mode 100644
index 000000000..7904912ae
--- /dev/null
+++ b/core/list-domain-users-output-defs-a-user-descriptor-properties-user.md
@@ -0,0 +1,19 @@
+# Untitled string in list-domain-users output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-domain-users-output.json#/$defs/user/properties/user
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-domain-users-output.json\*](cluster/list-domain-users-output.json "open original schema") |
+
+## user Type
+
+`string`
+
+## user Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/list-domain-users-output-defs-a-user-descriptor.md b/core/list-domain-users-output-defs-a-user-descriptor.md
new file mode 100644
index 000000000..2be51a73b
--- /dev/null
+++ b/core/list-domain-users-output-defs-a-user-descriptor.md
@@ -0,0 +1,81 @@
+# A user descriptor Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-domain-users-output.json#/$defs/user
+```
+
+Basic description of a user: name and (person) display name
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [list-domain-users-output.json\*](cluster/list-domain-users-output.json "open original schema") |
+
+## user Type
+
+`object` ([A user descriptor](list-domain-users-output-defs-a-user-descriptor.md))
+
+# user Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :----------------------------- | :-------- | :------- | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [user](#user) | `string` | Required | cannot be null | [list-domain-users output](list-domain-users-output-defs-a-user-descriptor-properties-user.md "http://schema.nethserver.org/cluster/list-domain-users-output.json#/$defs/user/properties/user") |
+| [display\_name](#display_name) | `string` | Required | cannot be null | [list-domain-users output](list-domain-users-output-defs-a-user-descriptor-properties-display-name.md "http://schema.nethserver.org/cluster/list-domain-users-output.json#/$defs/user/properties/display_name") |
+| [locked](#locked) | `boolean` | Required | cannot be null | [list-domain-users output](list-domain-users-output-defs-a-user-descriptor-properties-locked.md "http://schema.nethserver.org/cluster/list-domain-users-output.json#/$defs/user/properties/locked") |
+
+## user
+
+
+
+`user`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-domain-users output](list-domain-users-output-defs-a-user-descriptor-properties-user.md "http://schema.nethserver.org/cluster/list-domain-users-output.json#/$defs/user/properties/user")
+
+### user Type
+
+`string`
+
+### user Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## display\_name
+
+Preferred name of a person to be used when displaying entries (RFC 2798/2.3)
+
+`display_name`
+
+* is required
+
+* Type: `string` ([Display name](list-domain-users-output-defs-a-user-descriptor-properties-display-name.md))
+
+* cannot be null
+
+* defined in: [list-domain-users output](list-domain-users-output-defs-a-user-descriptor-properties-display-name.md "http://schema.nethserver.org/cluster/list-domain-users-output.json#/$defs/user/properties/display_name")
+
+### display\_name Type
+
+`string` ([Display name](list-domain-users-output-defs-a-user-descriptor-properties-display-name.md))
+
+## locked
+
+True, if the user account has been locked, preventing the user from logging in
+
+`locked`
+
+* is required
+
+* Type: `boolean` ([Locked](list-domain-users-output-defs-a-user-descriptor-properties-locked.md))
+
+* cannot be null
+
+* defined in: [list-domain-users output](list-domain-users-output-defs-a-user-descriptor-properties-locked.md "http://schema.nethserver.org/cluster/list-domain-users-output.json#/$defs/user/properties/locked")
+
+### locked Type
+
+`boolean` ([Locked](list-domain-users-output-defs-a-user-descriptor-properties-locked.md))
diff --git a/core/list-domain-users-output-defs.md b/core/list-domain-users-output-defs.md
new file mode 100644
index 000000000..6bcbaaea3
--- /dev/null
+++ b/core/list-domain-users-output-defs.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in list-domain-users output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-domain-users-output.json#/$defs
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-domain-users-output.json\*](cluster/list-domain-users-output.json "open original schema") |
+
+## $defs Type
+
+unknown
diff --git a/core/list-domain-users-output-properties-users.md b/core/list-domain-users-output-properties-users.md
new file mode 100644
index 000000000..232f9dd28
--- /dev/null
+++ b/core/list-domain-users-output-properties-users.md
@@ -0,0 +1,15 @@
+# Untitled array in list-domain-users output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-domain-users-output.json#/properties/users
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-domain-users-output.json\*](cluster/list-domain-users-output.json "open original schema") |
+
+## users Type
+
+`object[]` ([A user descriptor](list-domain-users-output-defs-a-user-descriptor.md))
diff --git a/core/list-domain-users-output.json b/core/list-domain-users-output.json
new file mode 100644
index 000000000..d20128050
--- /dev/null
+++ b/core/list-domain-users-output.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"list-domain-users output","description":"List users of a given accounts domain","$id":"http://schema.nethserver.org/cluster/list-domain-users-output.json","examples":[{"users":[{"user":"Administrator","display_name":"Administrator"}]}],"type":"object","required":["users"],"properties":{"users":{"type":"array","items":{"$ref":"#/$defs/user"}}},"$defs":{"user":{"title":"A user descriptor","description":"Basic description of a user: name and (person) display name","type":"object","required":["user","display_name","locked"],"properties":{"user":{"type":"string","minLength":1},"display_name":{"type":"string","title":"Display name","description":"Preferred name of a person to be used when displaying entries (RFC 2798/2.3)"},"locked":{"type":"boolean","title":"Locked","description":"True, if the user account has been locked, preventing the user from logging in"}}}}}
diff --git a/core/list-domain-users-output.md b/core/list-domain-users-output.md
new file mode 100644
index 000000000..977dc003b
--- /dev/null
+++ b/core/list-domain-users-output.md
@@ -0,0 +1,126 @@
+# list-domain-users output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-domain-users-output.json
+```
+
+List users of a given accounts domain
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [list-domain-users-output.json](cluster/list-domain-users-output.json "open original schema") |
+
+## list-domain-users output Type
+
+`object` ([list-domain-users output](list-domain-users-output.md))
+
+## list-domain-users output Examples
+
+```json
+{
+ "users": [
+ {
+ "user": "Administrator",
+ "display_name": "Administrator"
+ }
+ ]
+}
+```
+
+# list-domain-users output Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :-------------- | :------ | :------- | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [users](#users) | `array` | Required | cannot be null | [list-domain-users output](list-domain-users-output-properties-users.md "http://schema.nethserver.org/cluster/list-domain-users-output.json#/properties/users") |
+
+## users
+
+
+
+`users`
+
+* is required
+
+* Type: `object[]` ([A user descriptor](list-domain-users-output-defs-a-user-descriptor.md))
+
+* cannot be null
+
+* defined in: [list-domain-users output](list-domain-users-output-properties-users.md "http://schema.nethserver.org/cluster/list-domain-users-output.json#/properties/users")
+
+### users Type
+
+`object[]` ([A user descriptor](list-domain-users-output-defs-a-user-descriptor.md))
+
+# list-domain-users output Definitions
+
+## Definitions group user
+
+Reference this group by using
+
+```json
+{"$ref":"http://schema.nethserver.org/cluster/list-domain-users-output.json#/$defs/user"}
+```
+
+| Property | Type | Required | Nullable | Defined by |
+| :----------------------------- | :-------- | :------- | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [user](#user) | `string` | Required | cannot be null | [list-domain-users output](list-domain-users-output-defs-a-user-descriptor-properties-user.md "http://schema.nethserver.org/cluster/list-domain-users-output.json#/$defs/user/properties/user") |
+| [display\_name](#display_name) | `string` | Required | cannot be null | [list-domain-users output](list-domain-users-output-defs-a-user-descriptor-properties-display-name.md "http://schema.nethserver.org/cluster/list-domain-users-output.json#/$defs/user/properties/display_name") |
+| [locked](#locked) | `boolean` | Required | cannot be null | [list-domain-users output](list-domain-users-output-defs-a-user-descriptor-properties-locked.md "http://schema.nethserver.org/cluster/list-domain-users-output.json#/$defs/user/properties/locked") |
+
+### user
+
+
+
+`user`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-domain-users output](list-domain-users-output-defs-a-user-descriptor-properties-user.md "http://schema.nethserver.org/cluster/list-domain-users-output.json#/$defs/user/properties/user")
+
+#### user Type
+
+`string`
+
+#### user Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+### display\_name
+
+Preferred name of a person to be used when displaying entries (RFC 2798/2.3)
+
+`display_name`
+
+* is required
+
+* Type: `string` ([Display name](list-domain-users-output-defs-a-user-descriptor-properties-display-name.md))
+
+* cannot be null
+
+* defined in: [list-domain-users output](list-domain-users-output-defs-a-user-descriptor-properties-display-name.md "http://schema.nethserver.org/cluster/list-domain-users-output.json#/$defs/user/properties/display_name")
+
+#### display\_name Type
+
+`string` ([Display name](list-domain-users-output-defs-a-user-descriptor-properties-display-name.md))
+
+### locked
+
+True, if the user account has been locked, preventing the user from logging in
+
+`locked`
+
+* is required
+
+* Type: `boolean` ([Locked](list-domain-users-output-defs-a-user-descriptor-properties-locked.md))
+
+* cannot be null
+
+* defined in: [list-domain-users output](list-domain-users-output-defs-a-user-descriptor-properties-locked.md "http://schema.nethserver.org/cluster/list-domain-users-output.json#/$defs/user/properties/locked")
+
+#### locked Type
+
+`boolean` ([Locked](list-domain-users-output-defs-a-user-descriptor-properties-locked.md))
diff --git a/core/list-favorites-input.json b/core/list-favorites-input.json
new file mode 100644
index 000000000..4ec21038c
--- /dev/null
+++ b/core/list-favorites-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"list-favorites input","$id":"http://schema.nethserver.org/cluster/list-favorites-input.json","description":"The action expects a null value as input","examples":[null],"type":"null"}
diff --git a/core/list-favorites-input.md b/core/list-favorites-input.md
new file mode 100644
index 000000000..aec4f6228
--- /dev/null
+++ b/core/list-favorites-input.md
@@ -0,0 +1,21 @@
+# list-favorites input Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-favorites-input.json
+```
+
+The action expects a null value as input
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-favorites-input.json](cluster/list-favorites-input.json "open original schema") |
+
+## list-favorites input Type
+
+`null`, the value must be null ([list-favorites input](list-favorites-input.md))
+
+## list-favorites input Examples
+
+```json
+null
+```
diff --git a/core/list-favorites-output-items-parameters-id.md b/core/list-favorites-output-items-parameters-id.md
new file mode 100644
index 000000000..0814d7a3c
--- /dev/null
+++ b/core/list-favorites-output-items-parameters-id.md
@@ -0,0 +1,15 @@
+# Untitled string in list-favorites output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-favorites-output.json#/items/parameters/id
+```
+
+Instance id
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-favorites-output.json\*](cluster/list-favorites-output.json "open original schema") |
+
+## id Type
+
+`string`
diff --git a/core/list-favorites-output-items-parameters-module.md b/core/list-favorites-output-items-parameters-module.md
new file mode 100644
index 000000000..25c391490
--- /dev/null
+++ b/core/list-favorites-output-items-parameters-module.md
@@ -0,0 +1,15 @@
+# Untitled string in list-favorites output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-favorites-output.json#/items/parameters/module
+```
+
+Module name of the instance
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-favorites-output.json\*](cluster/list-favorites-output.json "open original schema") |
+
+## module Type
+
+`string`
diff --git a/core/list-favorites-output-items-parameters.md b/core/list-favorites-output-items-parameters.md
new file mode 100644
index 000000000..59651fa2a
--- /dev/null
+++ b/core/list-favorites-output-items-parameters.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in list-favorites output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-favorites-output.json#/items/parameters
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-favorites-output.json\*](cluster/list-favorites-output.json "open original schema") |
+
+## parameters Type
+
+unknown
diff --git a/core/list-favorites-output-items.md b/core/list-favorites-output-items.md
new file mode 100644
index 000000000..6bc1dfc6f
--- /dev/null
+++ b/core/list-favorites-output-items.md
@@ -0,0 +1,15 @@
+# Untitled object in list-favorites output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-favorites-output.json#/items
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-favorites-output.json\*](cluster/list-favorites-output.json "open original schema") |
+
+## items Type
+
+`object` ([Details](list-favorites-output-items.md))
diff --git a/core/list-favorites-output.json b/core/list-favorites-output.json
new file mode 100644
index 000000000..150e65828
--- /dev/null
+++ b/core/list-favorites-output.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"list-favorites output","$id":"http://schema.nethserver.org/cluster/list-favorites-output.json","description":"Output schema of the list-favorites action","examples":[[{"id":"dokuwiki1","module":"dokuwiki"},{"id":"nextcloud1","module":"nextcloud"}]],"type":"array","items":{"type":"object","parameters":{"id":{"description":"Instance id","type":"string"},"module":{"description":"Module name of the instance","type":"string"}},"required":["id","module"]}}
diff --git a/core/list-favorites-output.md b/core/list-favorites-output.md
new file mode 100644
index 000000000..58c7f3c47
--- /dev/null
+++ b/core/list-favorites-output.md
@@ -0,0 +1,30 @@
+# list-favorites output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-favorites-output.json
+```
+
+Output schema of the list-favorites action
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-favorites-output.json](cluster/list-favorites-output.json "open original schema") |
+
+## list-favorites output Type
+
+`object[]` ([Details](list-favorites-output-items.md))
+
+## list-favorites output Examples
+
+```json
+[
+ {
+ "id": "dokuwiki1",
+ "module": "dokuwiki"
+ },
+ {
+ "id": "nextcloud1",
+ "module": "nextcloud"
+ }
+]
+```
diff --git a/core/list-installed-modules-input.json b/core/list-installed-modules-input.json
new file mode 100644
index 000000000..d575a9ffa
--- /dev/null
+++ b/core/list-installed-modules-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"list-installed-modules input","$id":"http://schema.nethserver.org/cluster/list-installed-modules-input.json","description":"The action does not accept any input","examples":[null],"type":"null"}
diff --git a/core/list-installed-modules-input.md b/core/list-installed-modules-input.md
new file mode 100644
index 000000000..9caa6f8f3
--- /dev/null
+++ b/core/list-installed-modules-input.md
@@ -0,0 +1,21 @@
+# list-installed-modules input Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-installed-modules-input.json
+```
+
+The action does not accept any input
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-installed-modules-input.json](cluster/list-installed-modules-input.json "open original schema") |
+
+## list-installed-modules input Type
+
+`null`, the value must be null ([list-installed-modules input](list-installed-modules-input.md))
+
+## list-installed-modules input Examples
+
+```json
+null
+```
diff --git a/core/list-installed-modules-output-patternproperties--items-properties-digest.md b/core/list-installed-modules-output-patternproperties--items-properties-digest.md
new file mode 100644
index 000000000..be5f9a0b4
--- /dev/null
+++ b/core/list-installed-modules-output-patternproperties--items-properties-digest.md
@@ -0,0 +1,15 @@
+# Untitled string in Output for list-installed-modules Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-installed-modules-output.json#/patternProperties/.*/items/properties/digest
+```
+
+Image digest
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-installed-modules-output.json\*](cluster/list-installed-modules-output.json "open original schema") |
+
+## digest Type
+
+`string`
diff --git a/core/list-installed-modules-output-patternproperties--items-properties-flags-items.md b/core/list-installed-modules-output-patternproperties--items-properties-flags-items.md
new file mode 100644
index 000000000..30e34958c
--- /dev/null
+++ b/core/list-installed-modules-output-patternproperties--items-properties-flags-items.md
@@ -0,0 +1,15 @@
+# Untitled string in Output for list-installed-modules Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-installed-modules-output.json#/patternProperties/.*/items/properties/flags/items
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-installed-modules-output.json\*](cluster/list-installed-modules-output.json "open original schema") |
+
+## items Type
+
+`string`
diff --git a/core/list-installed-modules-output-patternproperties--items-properties-flags.md b/core/list-installed-modules-output-patternproperties--items-properties-flags.md
new file mode 100644
index 000000000..05a991636
--- /dev/null
+++ b/core/list-installed-modules-output-patternproperties--items-properties-flags.md
@@ -0,0 +1,15 @@
+# Untitled array in Output for list-installed-modules Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-installed-modules-output.json#/patternProperties/.*/items/properties/flags
+```
+
+List of flags from org.nethserver.flags image label
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-installed-modules-output.json\*](cluster/list-installed-modules-output.json "open original schema") |
+
+## flags Type
+
+`string[]`
diff --git a/core/list-installed-modules-output-patternproperties--items-properties-id.md b/core/list-installed-modules-output-patternproperties--items-properties-id.md
new file mode 100644
index 000000000..f596c3def
--- /dev/null
+++ b/core/list-installed-modules-output-patternproperties--items-properties-id.md
@@ -0,0 +1,15 @@
+# Untitled string in Output for list-installed-modules Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-installed-modules-output.json#/patternProperties/.*/items/properties/id
+```
+
+Unique name of a module instance
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-installed-modules-output.json\*](cluster/list-installed-modules-output.json "open original schema") |
+
+## id Type
+
+`string`
diff --git a/core/list-installed-modules-output-patternproperties--items-properties-logo.md b/core/list-installed-modules-output-patternproperties--items-properties-logo.md
new file mode 100644
index 000000000..63608f4af
--- /dev/null
+++ b/core/list-installed-modules-output-patternproperties--items-properties-logo.md
@@ -0,0 +1,15 @@
+# Untitled string in Output for list-installed-modules Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-installed-modules-output.json#/patternProperties/.*/items/properties/logo
+```
+
+The logo URL from repository cache, it can be an empty string
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-installed-modules-output.json\*](cluster/list-installed-modules-output.json "open original schema") |
+
+## logo Type
+
+`string`
diff --git a/core/list-installed-modules-output-patternproperties--items-properties-module.md b/core/list-installed-modules-output-patternproperties--items-properties-module.md
new file mode 100644
index 000000000..97bac7315
--- /dev/null
+++ b/core/list-installed-modules-output-patternproperties--items-properties-module.md
@@ -0,0 +1,15 @@
+# Untitled string in Output for list-installed-modules Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-installed-modules-output.json#/patternProperties/.*/items/properties/module
+```
+
+Name of the module of the instance
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-installed-modules-output.json\*](cluster/list-installed-modules-output.json "open original schema") |
+
+## module Type
+
+`string`
diff --git a/core/list-installed-modules-output-patternproperties--items-properties-node.md b/core/list-installed-modules-output-patternproperties--items-properties-node.md
new file mode 100644
index 000000000..4f65574aa
--- /dev/null
+++ b/core/list-installed-modules-output-patternproperties--items-properties-node.md
@@ -0,0 +1,15 @@
+# Untitled string in Output for list-installed-modules Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-installed-modules-output.json#/patternProperties/.*/items/properties/node
+```
+
+Id of the node where the instance is running
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-installed-modules-output.json\*](cluster/list-installed-modules-output.json "open original schema") |
+
+## node Type
+
+`string`
diff --git a/core/list-installed-modules-output-patternproperties--items-properties-source.md b/core/list-installed-modules-output-patternproperties--items-properties-source.md
new file mode 100644
index 000000000..378f5caaa
--- /dev/null
+++ b/core/list-installed-modules-output-patternproperties--items-properties-source.md
@@ -0,0 +1,15 @@
+# Untitled string in Output for list-installed-modules Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-installed-modules-output.json#/patternProperties/.*/items/properties/source
+```
+
+The URL of the container image registry
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-installed-modules-output.json\*](cluster/list-installed-modules-output.json "open original schema") |
+
+## source Type
+
+`string`
diff --git a/core/list-installed-modules-output-patternproperties--items-properties-version.md b/core/list-installed-modules-output-patternproperties--items-properties-version.md
new file mode 100644
index 000000000..12c3a1a2b
--- /dev/null
+++ b/core/list-installed-modules-output-patternproperties--items-properties-version.md
@@ -0,0 +1,15 @@
+# Untitled string in Output for list-installed-modules Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-installed-modules-output.json#/patternProperties/.*/items/properties/version
+```
+
+A valid semantic version extracted from image tag
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-installed-modules-output.json\*](cluster/list-installed-modules-output.json "open original schema") |
+
+## version Type
+
+`string`
diff --git a/core/list-installed-modules-output-patternproperties--items.md b/core/list-installed-modules-output-patternproperties--items.md
new file mode 100644
index 000000000..261e3404a
--- /dev/null
+++ b/core/list-installed-modules-output-patternproperties--items.md
@@ -0,0 +1,172 @@
+# Untitled object in Output for list-installed-modules Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-installed-modules-output.json#/patternProperties/.*/items
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [list-installed-modules-output.json\*](cluster/list-installed-modules-output.json "open original schema") |
+
+## items Type
+
+`object` ([Details](list-installed-modules-output-patternproperties--items.md))
+
+# items Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------ | :------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [id](#id) | `string` | Required | cannot be null | [Output for list-installed-modules](list-installed-modules-output-patternproperties--items-properties-id.md "http://schema.nethserver.org/cluster/list-installed-modules-output.json#/patternProperties/.*/items/properties/id") |
+| [node](#node) | `string` | Required | cannot be null | [Output for list-installed-modules](list-installed-modules-output-patternproperties--items-properties-node.md "http://schema.nethserver.org/cluster/list-installed-modules-output.json#/patternProperties/.*/items/properties/node") |
+| [digest](#digest) | `string` | Required | cannot be null | [Output for list-installed-modules](list-installed-modules-output-patternproperties--items-properties-digest.md "http://schema.nethserver.org/cluster/list-installed-modules-output.json#/patternProperties/.*/items/properties/digest") |
+| [source](#source) | `string` | Required | cannot be null | [Output for list-installed-modules](list-installed-modules-output-patternproperties--items-properties-source.md "http://schema.nethserver.org/cluster/list-installed-modules-output.json#/patternProperties/.*/items/properties/source") |
+| [version](#version) | `string` | Required | cannot be null | [Output for list-installed-modules](list-installed-modules-output-patternproperties--items-properties-version.md "http://schema.nethserver.org/cluster/list-installed-modules-output.json#/patternProperties/.*/items/properties/version") |
+| [logo](#logo) | `string` | Required | cannot be null | [Output for list-installed-modules](list-installed-modules-output-patternproperties--items-properties-logo.md "http://schema.nethserver.org/cluster/list-installed-modules-output.json#/patternProperties/.*/items/properties/logo") |
+| [module](#module) | `string` | Required | cannot be null | [Output for list-installed-modules](list-installed-modules-output-patternproperties--items-properties-module.md "http://schema.nethserver.org/cluster/list-installed-modules-output.json#/patternProperties/.*/items/properties/module") |
+| [flags](#flags) | `array` | Required | cannot be null | [Output for list-installed-modules](list-installed-modules-output-patternproperties--items-properties-flags.md "http://schema.nethserver.org/cluster/list-installed-modules-output.json#/patternProperties/.*/items/properties/flags") |
+
+## id
+
+Unique name of a module instance
+
+`id`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [Output for list-installed-modules](list-installed-modules-output-patternproperties--items-properties-id.md "http://schema.nethserver.org/cluster/list-installed-modules-output.json#/patternProperties/.*/items/properties/id")
+
+### id Type
+
+`string`
+
+## node
+
+Id of the node where the instance is running
+
+`node`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [Output for list-installed-modules](list-installed-modules-output-patternproperties--items-properties-node.md "http://schema.nethserver.org/cluster/list-installed-modules-output.json#/patternProperties/.*/items/properties/node")
+
+### node Type
+
+`string`
+
+## digest
+
+Image digest
+
+`digest`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [Output for list-installed-modules](list-installed-modules-output-patternproperties--items-properties-digest.md "http://schema.nethserver.org/cluster/list-installed-modules-output.json#/patternProperties/.*/items/properties/digest")
+
+### digest Type
+
+`string`
+
+## source
+
+The URL of the container image registry
+
+`source`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [Output for list-installed-modules](list-installed-modules-output-patternproperties--items-properties-source.md "http://schema.nethserver.org/cluster/list-installed-modules-output.json#/patternProperties/.*/items/properties/source")
+
+### source Type
+
+`string`
+
+## version
+
+A valid semantic version extracted from image tag
+
+`version`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [Output for list-installed-modules](list-installed-modules-output-patternproperties--items-properties-version.md "http://schema.nethserver.org/cluster/list-installed-modules-output.json#/patternProperties/.*/items/properties/version")
+
+### version Type
+
+`string`
+
+## logo
+
+The logo URL from repository cache, it can be an empty string
+
+`logo`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [Output for list-installed-modules](list-installed-modules-output-patternproperties--items-properties-logo.md "http://schema.nethserver.org/cluster/list-installed-modules-output.json#/patternProperties/.*/items/properties/logo")
+
+### logo Type
+
+`string`
+
+## module
+
+Name of the module of the instance
+
+`module`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [Output for list-installed-modules](list-installed-modules-output-patternproperties--items-properties-module.md "http://schema.nethserver.org/cluster/list-installed-modules-output.json#/patternProperties/.*/items/properties/module")
+
+### module Type
+
+`string`
+
+## flags
+
+List of flags from org.nethserver.flags image label
+
+`flags`
+
+* is required
+
+* Type: `string[]`
+
+* cannot be null
+
+* defined in: [Output for list-installed-modules](list-installed-modules-output-patternproperties--items-properties-flags.md "http://schema.nethserver.org/cluster/list-installed-modules-output.json#/patternProperties/.*/items/properties/flags")
+
+### flags Type
+
+`string[]`
diff --git a/core/list-installed-modules-output-patternproperties-.md b/core/list-installed-modules-output-patternproperties-.md
new file mode 100644
index 000000000..b172361da
--- /dev/null
+++ b/core/list-installed-modules-output-patternproperties-.md
@@ -0,0 +1,15 @@
+# Untitled array in Output for list-installed-modules Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-installed-modules-output.json#/patternProperties/.*
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-installed-modules-output.json\*](cluster/list-installed-modules-output.json "open original schema") |
+
+## .\* Type
+
+`object[]` ([Details](list-installed-modules-output-patternproperties--items.md))
diff --git a/core/list-installed-modules-output-patternproperties.md b/core/list-installed-modules-output-patternproperties.md
new file mode 100644
index 000000000..f65466d73
--- /dev/null
+++ b/core/list-installed-modules-output-patternproperties.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in Output for list-installed-modules Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-installed-modules-output.json#/patternProperties
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-installed-modules-output.json\*](cluster/list-installed-modules-output.json "open original schema") |
+
+## patternProperties Type
+
+unknown
diff --git a/core/list-installed-modules-output.json b/core/list-installed-modules-output.json
new file mode 100644
index 000000000..f1dc64ec2
--- /dev/null
+++ b/core/list-installed-modules-output.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"Output for list-installed-modules","description":"list-installed-modules output","$id":"http://schema.nethserver.org/cluster/list-installed-modules-output.json","examples":[{"ghcr.io/nethserver/traefik":[{"id":"traefik1","node":"1","digest":"sha256:64a4ccd3c5ded935ac8d28d2bd534e1b305b80a131a3fe3fe5e123c03b4aa772","source":"ghcr.io/nethserver/traefik","version":"latest","logo":"https://raw.githubusercontent.com/NethServer/ns8-repomd/repomd/dokuwiki/logo.png","module":"traefik","flags":["no_data_backup","core_module"]}],"ghcr.io/nethserver/dokuwiki":[{"id":"dokuwiki2","node":"1","digest":"sha256:929465c177d9e40559b3fa838f2e429060ff7e8c3e4e1a12076b3304ad562982","source":"ghcr.io/nethserver/dokuwiki","version":"0.0.1-alpha1","logo":"https://raw.githubusercontent.com/NethServer/ns8-repomd/repomd/dokuwiki/logo.png","module":"dokuwiki","flags":[]},{"id":"dokuwiki1","node":"1","digest":"sha256:929465c177d9e40559b3fa838f2e429060ff7e8c3e4e1a12076b3304ad562982","source":"ghcr.io/nethserver/dokuwiki","version":"0.0.1-alpha1","logo":"https://raw.githubusercontent.com/NethServer/ns8-repomd/repomd/dokuwiki/logo.png","module":"dokuwiki","flags":[]}]}],"type":"object","patternProperties":{".*":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique name of a module instance"},"node":{"type":"string","description":"Id of the node where the instance is running"},"digest":{"type":"string","description":"Image digest"},"source":{"type":"string","description":"The URL of the container image registry"},"version":{"type":"string","description":"A valid semantic version extracted from image tag"},"logo":{"type":"string","description":"The logo URL from repository cache, it can be an empty string"},"module":{"type":"string","description":"Name of the module of the instance"},"flags":{"type":"array","items":{"type":"string"},"description":"List of flags from org.nethserver.flags image label"}},"required":["id","node","digest","source","version","logo","module","flags"]}}}}
diff --git a/core/list-installed-modules-output.md b/core/list-installed-modules-output.md
new file mode 100644
index 000000000..87bc1c559
--- /dev/null
+++ b/core/list-installed-modules-output.md
@@ -0,0 +1,83 @@
+# Output for list-installed-modules Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-installed-modules-output.json
+```
+
+list-installed-modules output
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-installed-modules-output.json](cluster/list-installed-modules-output.json "open original schema") |
+
+## Output for list-installed-modules Type
+
+`object` ([Output for list-installed-modules](list-installed-modules-output.md))
+
+## Output for list-installed-modules Examples
+
+```json
+{
+ "ghcr.io/nethserver/traefik": [
+ {
+ "id": "traefik1",
+ "node": "1",
+ "digest": "sha256:64a4ccd3c5ded935ac8d28d2bd534e1b305b80a131a3fe3fe5e123c03b4aa772",
+ "source": "ghcr.io/nethserver/traefik",
+ "version": "latest",
+ "logo": "https://raw.githubusercontent.com/NethServer/ns8-repomd/repomd/dokuwiki/logo.png",
+ "module": "traefik",
+ "flags": [
+ "no_data_backup",
+ "core_module"
+ ]
+ }
+ ],
+ "ghcr.io/nethserver/dokuwiki": [
+ {
+ "id": "dokuwiki2",
+ "node": "1",
+ "digest": "sha256:929465c177d9e40559b3fa838f2e429060ff7e8c3e4e1a12076b3304ad562982",
+ "source": "ghcr.io/nethserver/dokuwiki",
+ "version": "0.0.1-alpha1",
+ "logo": "https://raw.githubusercontent.com/NethServer/ns8-repomd/repomd/dokuwiki/logo.png",
+ "module": "dokuwiki",
+ "flags": []
+ },
+ {
+ "id": "dokuwiki1",
+ "node": "1",
+ "digest": "sha256:929465c177d9e40559b3fa838f2e429060ff7e8c3e4e1a12076b3304ad562982",
+ "source": "ghcr.io/nethserver/dokuwiki",
+ "version": "0.0.1-alpha1",
+ "logo": "https://raw.githubusercontent.com/NethServer/ns8-repomd/repomd/dokuwiki/logo.png",
+ "module": "dokuwiki",
+ "flags": []
+ }
+ ]
+}
+```
+
+# Output for list-installed-modules Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------- | :------ | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `.*` | `array` | Optional | cannot be null | [Output for list-installed-modules](list-installed-modules-output-patternproperties-.md "http://schema.nethserver.org/cluster/list-installed-modules-output.json#/patternProperties/.*") |
+
+## Pattern: `.*`
+
+
+
+`.*`
+
+* is optional
+
+* Type: `object[]` ([Details](list-installed-modules-output-patternproperties--items.md))
+
+* cannot be null
+
+* defined in: [Output for list-installed-modules](list-installed-modules-output-patternproperties-.md "http://schema.nethserver.org/cluster/list-installed-modules-output.json#/patternProperties/.*")
+
+### .\* Type
+
+`object[]` ([Details](list-installed-modules-output-patternproperties--items.md))
diff --git a/core/list-loki-instances-output-properties-instances-items-properties-active.md b/core/list-loki-instances-output-properties-instances-items-properties-active.md
new file mode 100644
index 000000000..d7bf54946
--- /dev/null
+++ b/core/list-loki-instances-output-properties-instances-items-properties-active.md
@@ -0,0 +1,15 @@
+# Untitled boolean in List loki instances Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-loki-instances-output.json#/properties/instances/items/properties/active
+```
+
+The Loki instance is the currently active.
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-loki-instances-output.json\*](cluster/list-loki-instances-output.json "open original schema") |
+
+## active Type
+
+`boolean`
diff --git a/core/list-loki-instances-output-properties-instances-items-properties-active_from.md b/core/list-loki-instances-output-properties-instances-items-properties-active_from.md
new file mode 100644
index 000000000..758de51df
--- /dev/null
+++ b/core/list-loki-instances-output-properties-instances-items-properties-active_from.md
@@ -0,0 +1,19 @@
+# Untitled string in List loki instances Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-loki-instances-output.json#/properties/instances/items/properties/active_from
+```
+
+The ISO 8601 date-time when the Loki instance was activated.
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-loki-instances-output.json\*](cluster/list-loki-instances-output.json "open original schema") |
+
+## active\_from Type
+
+`string`
+
+## active\_from Constraints
+
+**date time**: the string must be a date time string, according to [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339 "check the specification")
diff --git a/core/list-loki-instances-output-properties-instances-items-properties-active_to.md b/core/list-loki-instances-output-properties-instances-items-properties-active_to.md
new file mode 100644
index 000000000..a5c0ddc89
--- /dev/null
+++ b/core/list-loki-instances-output-properties-instances-items-properties-active_to.md
@@ -0,0 +1,19 @@
+# Untitled string in List loki instances Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-loki-instances-output.json#/properties/instances/items/properties/active_to
+```
+
+The ISO 8601 date-time when the Loki instance was deactivated.
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-loki-instances-output.json\*](cluster/list-loki-instances-output.json "open original schema") |
+
+## active\_to Type
+
+`string`
+
+## active\_to Constraints
+
+**date time**: the string must be a date time string, according to [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339 "check the specification")
diff --git a/core/list-loki-instances-output-properties-instances-items-properties-instance_id.md b/core/list-loki-instances-output-properties-instances-items-properties-instance_id.md
new file mode 100644
index 000000000..78854d806
--- /dev/null
+++ b/core/list-loki-instances-output-properties-instances-items-properties-instance_id.md
@@ -0,0 +1,15 @@
+# Untitled string in List loki instances Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-loki-instances-output.json#/properties/instances/items/properties/instance_id
+```
+
+The Loki instance identifier.
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-loki-instances-output.json\*](cluster/list-loki-instances-output.json "open original schema") |
+
+## instance\_id Type
+
+`string`
diff --git a/core/list-loki-instances-output-properties-instances-items-properties-instance_label.md b/core/list-loki-instances-output-properties-instances-items-properties-instance_label.md
new file mode 100644
index 000000000..653254751
--- /dev/null
+++ b/core/list-loki-instances-output-properties-instances-items-properties-instance_label.md
@@ -0,0 +1,15 @@
+# Untitled string in List loki instances Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-loki-instances-output.json#/properties/instances/items/properties/instance_label
+```
+
+The Loki instance label, if empty string, there's no label.
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-loki-instances-output.json\*](cluster/list-loki-instances-output.json "open original schema") |
+
+## instance\_label Type
+
+`string`
diff --git a/core/list-loki-instances-output-properties-instances-items-properties-log_count.md b/core/list-loki-instances-output-properties-instances-items-properties-log_count.md
new file mode 100644
index 000000000..79b859dd8
--- /dev/null
+++ b/core/list-loki-instances-output-properties-instances-items-properties-log_count.md
@@ -0,0 +1,15 @@
+# Untitled integer in List loki instances Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-loki-instances-output.json#/properties/instances/items/properties/log_count
+```
+
+The number of logs in the Loki instance.
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-loki-instances-output.json\*](cluster/list-loki-instances-output.json "open original schema") |
+
+## log\_count Type
+
+`integer`
diff --git a/core/list-loki-instances-output-properties-instances-items-properties-node_id.md b/core/list-loki-instances-output-properties-instances-items-properties-node_id.md
new file mode 100644
index 000000000..70e419eb7
--- /dev/null
+++ b/core/list-loki-instances-output-properties-instances-items-properties-node_id.md
@@ -0,0 +1,15 @@
+# Untitled string in List loki instances Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-loki-instances-output.json#/properties/instances/items/properties/node_id
+```
+
+The node identifier where the Loki instance is running.
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-loki-instances-output.json\*](cluster/list-loki-instances-output.json "open original schema") |
+
+## node\_id Type
+
+`string`
diff --git a/core/list-loki-instances-output-properties-instances-items-properties-node_label.md b/core/list-loki-instances-output-properties-instances-items-properties-node_label.md
new file mode 100644
index 000000000..470d36b7c
--- /dev/null
+++ b/core/list-loki-instances-output-properties-instances-items-properties-node_label.md
@@ -0,0 +1,15 @@
+# Untitled string in List loki instances Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-loki-instances-output.json#/properties/instances/items/properties/node_label
+```
+
+The node label where the Loki instance is running, can be empty.
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-loki-instances-output.json\*](cluster/list-loki-instances-output.json "open original schema") |
+
+## node\_label Type
+
+`string`
diff --git a/core/list-loki-instances-output-properties-instances-items-properties-retention_days.md b/core/list-loki-instances-output-properties-instances-items-properties-retention_days.md
new file mode 100644
index 000000000..09b44ac25
--- /dev/null
+++ b/core/list-loki-instances-output-properties-instances-items-properties-retention_days.md
@@ -0,0 +1,15 @@
+# Untitled integer in List loki instances Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-loki-instances-output.json#/properties/instances/items/properties/retention_days
+```
+
+The retention days for the Loki instance.
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-loki-instances-output.json\*](cluster/list-loki-instances-output.json "open original schema") |
+
+## retention\_days Type
+
+`integer`
diff --git a/core/list-loki-instances-output-properties-instances-items.md b/core/list-loki-instances-output-properties-instances-items.md
new file mode 100644
index 000000000..a7a9b5b3e
--- /dev/null
+++ b/core/list-loki-instances-output-properties-instances-items.md
@@ -0,0 +1,199 @@
+# Untitled object in List loki instances Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-loki-instances-output.json#/properties/instances/items
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [list-loki-instances-output.json\*](cluster/list-loki-instances-output.json "open original schema") |
+
+## items Type
+
+`object` ([Details](list-loki-instances-output-properties-instances-items.md))
+
+# items Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :--------------------------------- | :-------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [instance\_id](#instance_id) | `string` | Required | cannot be null | [List loki instances](list-loki-instances-output-properties-instances-items-properties-instance_id.md "http://schema.nethserver.org/cluster/list-loki-instances-output.json#/properties/instances/items/properties/instance_id") |
+| [instance\_label](#instance_label) | `string` | Required | cannot be null | [List loki instances](list-loki-instances-output-properties-instances-items-properties-instance_label.md "http://schema.nethserver.org/cluster/list-loki-instances-output.json#/properties/instances/items/properties/instance_label") |
+| [node\_id](#node_id) | `string` | Required | cannot be null | [List loki instances](list-loki-instances-output-properties-instances-items-properties-node_id.md "http://schema.nethserver.org/cluster/list-loki-instances-output.json#/properties/instances/items/properties/node_id") |
+| [node\_label](#node_label) | `string` | Required | cannot be null | [List loki instances](list-loki-instances-output-properties-instances-items-properties-node_label.md "http://schema.nethserver.org/cluster/list-loki-instances-output.json#/properties/instances/items/properties/node_label") |
+| [active](#active) | `boolean` | Required | cannot be null | [List loki instances](list-loki-instances-output-properties-instances-items-properties-active.md "http://schema.nethserver.org/cluster/list-loki-instances-output.json#/properties/instances/items/properties/active") |
+| [retention\_days](#retention_days) | `integer` | Optional | cannot be null | [List loki instances](list-loki-instances-output-properties-instances-items-properties-retention_days.md "http://schema.nethserver.org/cluster/list-loki-instances-output.json#/properties/instances/items/properties/retention_days") |
+| [active\_from](#active_from) | `string` | Optional | cannot be null | [List loki instances](list-loki-instances-output-properties-instances-items-properties-active_from.md "http://schema.nethserver.org/cluster/list-loki-instances-output.json#/properties/instances/items/properties/active_from") |
+| [active\_to](#active_to) | `string` | Optional | cannot be null | [List loki instances](list-loki-instances-output-properties-instances-items-properties-active_to.md "http://schema.nethserver.org/cluster/list-loki-instances-output.json#/properties/instances/items/properties/active_to") |
+| [log\_count](#log_count) | `integer` | Optional | cannot be null | [List loki instances](list-loki-instances-output-properties-instances-items-properties-log_count.md "http://schema.nethserver.org/cluster/list-loki-instances-output.json#/properties/instances/items/properties/log_count") |
+
+## instance\_id
+
+The Loki instance identifier.
+
+`instance_id`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [List loki instances](list-loki-instances-output-properties-instances-items-properties-instance_id.md "http://schema.nethserver.org/cluster/list-loki-instances-output.json#/properties/instances/items/properties/instance_id")
+
+### instance\_id Type
+
+`string`
+
+## instance\_label
+
+The Loki instance label, if empty string, there's no label.
+
+`instance_label`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [List loki instances](list-loki-instances-output-properties-instances-items-properties-instance_label.md "http://schema.nethserver.org/cluster/list-loki-instances-output.json#/properties/instances/items/properties/instance_label")
+
+### instance\_label Type
+
+`string`
+
+## node\_id
+
+The node identifier where the Loki instance is running.
+
+`node_id`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [List loki instances](list-loki-instances-output-properties-instances-items-properties-node_id.md "http://schema.nethserver.org/cluster/list-loki-instances-output.json#/properties/instances/items/properties/node_id")
+
+### node\_id Type
+
+`string`
+
+## node\_label
+
+The node label where the Loki instance is running, can be empty.
+
+`node_label`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [List loki instances](list-loki-instances-output-properties-instances-items-properties-node_label.md "http://schema.nethserver.org/cluster/list-loki-instances-output.json#/properties/instances/items/properties/node_label")
+
+### node\_label Type
+
+`string`
+
+## active
+
+The Loki instance is the currently active.
+
+`active`
+
+* is required
+
+* Type: `boolean`
+
+* cannot be null
+
+* defined in: [List loki instances](list-loki-instances-output-properties-instances-items-properties-active.md "http://schema.nethserver.org/cluster/list-loki-instances-output.json#/properties/instances/items/properties/active")
+
+### active Type
+
+`boolean`
+
+## retention\_days
+
+The retention days for the Loki instance.
+
+`retention_days`
+
+* is optional
+
+* Type: `integer`
+
+* cannot be null
+
+* defined in: [List loki instances](list-loki-instances-output-properties-instances-items-properties-retention_days.md "http://schema.nethserver.org/cluster/list-loki-instances-output.json#/properties/instances/items/properties/retention_days")
+
+### retention\_days Type
+
+`integer`
+
+## active\_from
+
+The ISO 8601 date-time when the Loki instance was activated.
+
+`active_from`
+
+* is optional
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [List loki instances](list-loki-instances-output-properties-instances-items-properties-active_from.md "http://schema.nethserver.org/cluster/list-loki-instances-output.json#/properties/instances/items/properties/active_from")
+
+### active\_from Type
+
+`string`
+
+### active\_from Constraints
+
+**date time**: the string must be a date time string, according to [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339 "check the specification")
+
+## active\_to
+
+The ISO 8601 date-time when the Loki instance was deactivated.
+
+`active_to`
+
+* is optional
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [List loki instances](list-loki-instances-output-properties-instances-items-properties-active_to.md "http://schema.nethserver.org/cluster/list-loki-instances-output.json#/properties/instances/items/properties/active_to")
+
+### active\_to Type
+
+`string`
+
+### active\_to Constraints
+
+**date time**: the string must be a date time string, according to [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339 "check the specification")
+
+## log\_count
+
+The number of logs in the Loki instance.
+
+`log_count`
+
+* is optional
+
+* Type: `integer`
+
+* cannot be null
+
+* defined in: [List loki instances](list-loki-instances-output-properties-instances-items-properties-log_count.md "http://schema.nethserver.org/cluster/list-loki-instances-output.json#/properties/instances/items/properties/log_count")
+
+### log\_count Type
+
+`integer`
diff --git a/core/list-loki-instances-output-properties-instances.md b/core/list-loki-instances-output-properties-instances.md
new file mode 100644
index 000000000..2cb410c8b
--- /dev/null
+++ b/core/list-loki-instances-output-properties-instances.md
@@ -0,0 +1,15 @@
+# Untitled array in List loki instances Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-loki-instances-output.json#/properties/instances
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-loki-instances-output.json\*](cluster/list-loki-instances-output.json "open original schema") |
+
+## instances Type
+
+`object[]` ([Details](list-loki-instances-output-properties-instances-items.md))
diff --git a/core/list-loki-instances-output.json b/core/list-loki-instances-output.json
new file mode 100644
index 000000000..5903f0250
--- /dev/null
+++ b/core/list-loki-instances-output.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"List loki instances","$id":"http://schema.nethserver.org/cluster/list-loki-instances-output.json","type":"object","required":["instances"],"properties":{"instances":{"type":"array","items":{"type":"object","required":["instance_id","instance_label","node_id","node_label","active"],"properties":{"instance_id":{"type":"string","description":"The Loki instance identifier."},"instance_label":{"type":"string","description":"The Loki instance label, if empty string, there's no label."},"node_id":{"type":"string","description":"The node identifier where the Loki instance is running."},"node_label":{"type":"string","description":"The node label where the Loki instance is running, can be empty."},"active":{"type":"boolean","description":"The Loki instance is the currently active."},"retention_days":{"type":"integer","description":"The retention days for the Loki instance."},"active_from":{"type":"string","format":"date-time","description":"The ISO 8601 date-time when the Loki instance was activated."},"active_to":{"type":"string","format":"date-time","description":"The ISO 8601 date-time when the Loki instance was deactivated."},"log_count":{"type":"integer","description":"The number of logs in the Loki instance."}}}}}}
diff --git a/core/list-loki-instances-output.md b/core/list-loki-instances-output.md
new file mode 100644
index 000000000..942ce7d29
--- /dev/null
+++ b/core/list-loki-instances-output.md
@@ -0,0 +1,39 @@
+# List loki instances Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-loki-instances-output.json
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [list-loki-instances-output.json](cluster/list-loki-instances-output.json "open original schema") |
+
+## List loki instances Type
+
+`object` ([List loki instances](list-loki-instances-output.md))
+
+# List loki instances Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :---------------------- | :------ | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [instances](#instances) | `array` | Required | cannot be null | [List loki instances](list-loki-instances-output-properties-instances.md "http://schema.nethserver.org/cluster/list-loki-instances-output.json#/properties/instances") |
+
+## instances
+
+
+
+`instances`
+
+* is required
+
+* Type: `object[]` ([Details](list-loki-instances-output-properties-instances-items.md))
+
+* cannot be null
+
+* defined in: [List loki instances](list-loki-instances-output-properties-instances.md "http://schema.nethserver.org/cluster/list-loki-instances-output.json#/properties/instances")
+
+### instances Type
+
+`object[]` ([Details](list-loki-instances-output-properties-instances-items.md))
diff --git a/core/list-modules-input.json b/core/list-modules-input.json
new file mode 100644
index 000000000..4d7c61f11
--- /dev/null
+++ b/core/list-modules-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"list-modules input","$id":"http://schema.nethserver.org/cluster/list-modules-input.json","description":"The action does not accept any input","examples":[null],"type":"null"}
diff --git a/core/list-modules-input.md b/core/list-modules-input.md
new file mode 100644
index 000000000..e2867039b
--- /dev/null
+++ b/core/list-modules-input.md
@@ -0,0 +1,21 @@
+# list-modules input Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-modules-input.json
+```
+
+The action does not accept any input
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-modules-input.json](cluster/list-modules-input.json "open original schema") |
+
+## list-modules input Type
+
+`null`, the value must be null ([list-modules input](list-modules-input.md))
+
+## list-modules input Examples
+
+```json
+null
+```
diff --git a/core/list-modules-output-items-installed-items-properties-digest.md b/core/list-modules-output-items-installed-items-properties-digest.md
new file mode 100644
index 000000000..012a86051
--- /dev/null
+++ b/core/list-modules-output-items-installed-items-properties-digest.md
@@ -0,0 +1,15 @@
+# Untitled string in list-modules output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-modules-output.json#/items/installed/items/properties/digest
+```
+
+Image digest
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-modules-output.json\*](cluster/list-modules-output.json "open original schema") |
+
+## digest Type
+
+`string`
diff --git a/core/list-modules-output-items-installed-items-properties-id.md b/core/list-modules-output-items-installed-items-properties-id.md
new file mode 100644
index 000000000..68d0b9e7b
--- /dev/null
+++ b/core/list-modules-output-items-installed-items-properties-id.md
@@ -0,0 +1,15 @@
+# Untitled string in list-modules output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-modules-output.json#/items/installed/items/properties/id
+```
+
+Unique name of a module instance
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-modules-output.json\*](cluster/list-modules-output.json "open original schema") |
+
+## id Type
+
+`string`
diff --git a/core/list-modules-output-items-installed-items-properties-node.md b/core/list-modules-output-items-installed-items-properties-node.md
new file mode 100644
index 000000000..c5256756d
--- /dev/null
+++ b/core/list-modules-output-items-installed-items-properties-node.md
@@ -0,0 +1,15 @@
+# Untitled string in list-modules output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-modules-output.json#/items/installed/items/properties/node
+```
+
+Id of the node where the instance is running
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-modules-output.json\*](cluster/list-modules-output.json "open original schema") |
+
+## node Type
+
+`string`
diff --git a/core/list-modules-output-items-installed-items-properties-source.md b/core/list-modules-output-items-installed-items-properties-source.md
new file mode 100644
index 000000000..bcce5fa0f
--- /dev/null
+++ b/core/list-modules-output-items-installed-items-properties-source.md
@@ -0,0 +1,15 @@
+# Untitled string in list-modules output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-modules-output.json#/items/installed/items/properties/source
+```
+
+The URL of the container image registry
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-modules-output.json\*](cluster/list-modules-output.json "open original schema") |
+
+## source Type
+
+`string`
diff --git a/core/list-modules-output-items-installed-items-properties-version.md b/core/list-modules-output-items-installed-items-properties-version.md
new file mode 100644
index 000000000..c959abaf4
--- /dev/null
+++ b/core/list-modules-output-items-installed-items-properties-version.md
@@ -0,0 +1,15 @@
+# Untitled string in list-modules output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-modules-output.json#/items/installed/items/properties/version
+```
+
+A valid semantic version extracted from image tag
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-modules-output.json\*](cluster/list-modules-output.json "open original schema") |
+
+## version Type
+
+`string`
diff --git a/core/list-modules-output-items-installed-items.md b/core/list-modules-output-items-installed-items.md
new file mode 100644
index 000000000..2be1743d1
--- /dev/null
+++ b/core/list-modules-output-items-installed-items.md
@@ -0,0 +1,115 @@
+# Untitled object in list-modules output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-modules-output.json#/items/installed/items
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [list-modules-output.json\*](cluster/list-modules-output.json "open original schema") |
+
+## items Type
+
+`object` ([Details](list-modules-output-items-installed-items.md))
+
+# items Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------ | :------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [id](#id) | `string` | Required | cannot be null | [list-modules output](list-modules-output-items-installed-items-properties-id.md "http://schema.nethserver.org/cluster/list-modules-output.json#/items/installed/items/properties/id") |
+| [node](#node) | `string` | Required | cannot be null | [list-modules output](list-modules-output-items-installed-items-properties-node.md "http://schema.nethserver.org/cluster/list-modules-output.json#/items/installed/items/properties/node") |
+| [digest](#digest) | `string` | Required | cannot be null | [list-modules output](list-modules-output-items-installed-items-properties-digest.md "http://schema.nethserver.org/cluster/list-modules-output.json#/items/installed/items/properties/digest") |
+| [source](#source) | `string` | Required | cannot be null | [list-modules output](list-modules-output-items-installed-items-properties-source.md "http://schema.nethserver.org/cluster/list-modules-output.json#/items/installed/items/properties/source") |
+| [version](#version) | `string` | Required | cannot be null | [list-modules output](list-modules-output-items-installed-items-properties-version.md "http://schema.nethserver.org/cluster/list-modules-output.json#/items/installed/items/properties/version") |
+
+## id
+
+Unique name of a module instance
+
+`id`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-modules output](list-modules-output-items-installed-items-properties-id.md "http://schema.nethserver.org/cluster/list-modules-output.json#/items/installed/items/properties/id")
+
+### id Type
+
+`string`
+
+## node
+
+Id of the node where the instance is running
+
+`node`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-modules output](list-modules-output-items-installed-items-properties-node.md "http://schema.nethserver.org/cluster/list-modules-output.json#/items/installed/items/properties/node")
+
+### node Type
+
+`string`
+
+## digest
+
+Image digest
+
+`digest`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-modules output](list-modules-output-items-installed-items-properties-digest.md "http://schema.nethserver.org/cluster/list-modules-output.json#/items/installed/items/properties/digest")
+
+### digest Type
+
+`string`
+
+## source
+
+The URL of the container image registry
+
+`source`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-modules output](list-modules-output-items-installed-items-properties-source.md "http://schema.nethserver.org/cluster/list-modules-output.json#/items/installed/items/properties/source")
+
+### source Type
+
+`string`
+
+## version
+
+A valid semantic version extracted from image tag
+
+`version`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-modules output](list-modules-output-items-installed-items-properties-version.md "http://schema.nethserver.org/cluster/list-modules-output.json#/items/installed/items/properties/version")
+
+### version Type
+
+`string`
diff --git a/core/list-modules-output-items-installed.md b/core/list-modules-output-items-installed.md
new file mode 100644
index 000000000..627df7969
--- /dev/null
+++ b/core/list-modules-output-items-installed.md
@@ -0,0 +1,15 @@
+# Untitled array in list-modules output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-modules-output.json#/items/installed
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-modules-output.json\*](cluster/list-modules-output.json "open original schema") |
+
+## installed Type
+
+`object[]` ([Details](list-modules-output-items-installed-items.md))
diff --git a/core/list-modules-output-items-properties-authors-items-parameters-email.md b/core/list-modules-output-items-properties-authors-items-parameters-email.md
new file mode 100644
index 000000000..336526179
--- /dev/null
+++ b/core/list-modules-output-items-properties-authors-items-parameters-email.md
@@ -0,0 +1,15 @@
+# Untitled idn-email in list-modules output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/authors/items/parameters/email
+```
+
+Author mail address
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-modules-output.json\*](cluster/list-modules-output.json "open original schema") |
+
+## email Type
+
+`idn-email`
diff --git a/core/list-modules-output-items-properties-authors-items-parameters-name.md b/core/list-modules-output-items-properties-authors-items-parameters-name.md
new file mode 100644
index 000000000..235ae7260
--- /dev/null
+++ b/core/list-modules-output-items-properties-authors-items-parameters-name.md
@@ -0,0 +1,15 @@
+# Untitled string in list-modules output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/authors/items/parameters/name
+```
+
+Author full name
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-modules-output.json\*](cluster/list-modules-output.json "open original schema") |
+
+## name Type
+
+`string`
diff --git a/core/list-modules-output-items-properties-authors-items-parameters.md b/core/list-modules-output-items-properties-authors-items-parameters.md
new file mode 100644
index 000000000..353723d83
--- /dev/null
+++ b/core/list-modules-output-items-properties-authors-items-parameters.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in list-modules output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/authors/items/parameters
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-modules-output.json\*](cluster/list-modules-output.json "open original schema") |
+
+## parameters Type
+
+unknown
diff --git a/core/list-modules-output-items-properties-authors-items.md b/core/list-modules-output-items-properties-authors-items.md
new file mode 100644
index 000000000..71f5e4ef8
--- /dev/null
+++ b/core/list-modules-output-items-properties-authors-items.md
@@ -0,0 +1,15 @@
+# Untitled object in list-modules output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/authors/items
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-modules-output.json\*](cluster/list-modules-output.json "open original schema") |
+
+## items Type
+
+`object` ([Details](list-modules-output-items-properties-authors-items.md))
diff --git a/core/list-modules-output-items-properties-authors.md b/core/list-modules-output-items-properties-authors.md
new file mode 100644
index 000000000..0d82d4825
--- /dev/null
+++ b/core/list-modules-output-items-properties-authors.md
@@ -0,0 +1,15 @@
+# Untitled array in list-modules output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/authors
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-modules-output.json\*](cluster/list-modules-output.json "open original schema") |
+
+## authors Type
+
+`object[]` ([Details](list-modules-output-items-properties-authors-items.md))
diff --git a/core/list-modules-output-items-properties-categories-items.md b/core/list-modules-output-items-properties-categories-items.md
new file mode 100644
index 000000000..0f62ba00d
--- /dev/null
+++ b/core/list-modules-output-items-properties-categories-items.md
@@ -0,0 +1,15 @@
+# Untitled string in list-modules output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/categories/items
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-modules-output.json\*](cluster/list-modules-output.json "open original schema") |
+
+## items Type
+
+`string`
diff --git a/core/list-modules-output-items-properties-categories.md b/core/list-modules-output-items-properties-categories.md
new file mode 100644
index 000000000..56f216365
--- /dev/null
+++ b/core/list-modules-output-items-properties-categories.md
@@ -0,0 +1,15 @@
+# Untitled array in list-modules output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/categories
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-modules-output.json\*](cluster/list-modules-output.json "open original schema") |
+
+## categories Type
+
+`string[]`
diff --git a/core/list-modules-output-items-properties-description.md b/core/list-modules-output-items-properties-description.md
new file mode 100644
index 000000000..19280c638
--- /dev/null
+++ b/core/list-modules-output-items-properties-description.md
@@ -0,0 +1,15 @@
+# Untitled object in list-modules output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/description
+```
+
+A map of language codes (eg. en, it) with the translated description
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-modules-output.json\*](cluster/list-modules-output.json "open original schema") |
+
+## description Type
+
+`object` ([Details](list-modules-output-items-properties-description.md))
diff --git a/core/list-modules-output-items-properties-docs-parameters-bug_url.md b/core/list-modules-output-items-properties-docs-parameters-bug_url.md
new file mode 100644
index 000000000..09e3789c8
--- /dev/null
+++ b/core/list-modules-output-items-properties-docs-parameters-bug_url.md
@@ -0,0 +1,15 @@
+# Untitled uri in list-modules output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/docs/parameters/bug_url
+```
+
+Link to the package issue tracker
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-modules-output.json\*](cluster/list-modules-output.json "open original schema") |
+
+## bug\_url Type
+
+`uri`
diff --git a/core/list-modules-output-items-properties-docs-parameters-code_url.md b/core/list-modules-output-items-properties-docs-parameters-code_url.md
new file mode 100644
index 000000000..2a7fe24e7
--- /dev/null
+++ b/core/list-modules-output-items-properties-docs-parameters-code_url.md
@@ -0,0 +1,15 @@
+# Untitled uri in list-modules output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/docs/parameters/code_url
+```
+
+Link to the source code repository
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-modules-output.json\*](cluster/list-modules-output.json "open original schema") |
+
+## code\_url Type
+
+`uri`
diff --git a/core/list-modules-output-items-properties-docs-parameters-documentation_url.md b/core/list-modules-output-items-properties-docs-parameters-documentation_url.md
new file mode 100644
index 000000000..34bf61828
--- /dev/null
+++ b/core/list-modules-output-items-properties-docs-parameters-documentation_url.md
@@ -0,0 +1,15 @@
+# Untitled uri in list-modules output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/docs/parameters/documentation_url
+```
+
+Link to the package documentation
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-modules-output.json\*](cluster/list-modules-output.json "open original schema") |
+
+## documentation\_url Type
+
+`uri`
diff --git a/core/list-modules-output-items-properties-docs-parameters.md b/core/list-modules-output-items-properties-docs-parameters.md
new file mode 100644
index 000000000..4435343c0
--- /dev/null
+++ b/core/list-modules-output-items-properties-docs-parameters.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in list-modules output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/docs/parameters
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-modules-output.json\*](cluster/list-modules-output.json "open original schema") |
+
+## parameters Type
+
+unknown
diff --git a/core/list-modules-output-items-properties-docs.md b/core/list-modules-output-items-properties-docs.md
new file mode 100644
index 000000000..43e744d87
--- /dev/null
+++ b/core/list-modules-output-items-properties-docs.md
@@ -0,0 +1,15 @@
+# Untitled object in list-modules output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/docs
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-modules-output.json\*](cluster/list-modules-output.json "open original schema") |
+
+## docs Type
+
+`object` ([Details](list-modules-output-items-properties-docs.md))
diff --git a/core/list-modules-output-items-properties-logo.md b/core/list-modules-output-items-properties-logo.md
new file mode 100644
index 000000000..385834450
--- /dev/null
+++ b/core/list-modules-output-items-properties-logo.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in list-modules output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/logo
+```
+
+The filename of the logo. The logo must be a PNG image of 256x256 pixels
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-modules-output.json\*](cluster/list-modules-output.json "open original schema") |
+
+## logo Type
+
+`string`
diff --git a/core/list-modules-output-items-properties-name.md b/core/list-modules-output-items-properties-name.md
new file mode 100644
index 000000000..4438faee6
--- /dev/null
+++ b/core/list-modules-output-items-properties-name.md
@@ -0,0 +1,15 @@
+# Untitled string in list-modules output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/name
+```
+
+Unique name of a package
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-modules-output.json\*](cluster/list-modules-output.json "open original schema") |
+
+## name Type
+
+`string`
diff --git a/core/list-modules-output-items-properties-repository.md b/core/list-modules-output-items-properties-repository.md
new file mode 100644
index 000000000..4f5ab2c0d
--- /dev/null
+++ b/core/list-modules-output-items-properties-repository.md
@@ -0,0 +1,15 @@
+# Untitled string in list-modules output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/repository
+```
+
+The internal ID of the repository inside redis
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-modules-output.json\*](cluster/list-modules-output.json "open original schema") |
+
+## repository Type
+
+`string`
diff --git a/core/list-modules-output-items-properties-repository_updated.md b/core/list-modules-output-items-properties-repository_updated.md
new file mode 100644
index 000000000..ab31dbfee
--- /dev/null
+++ b/core/list-modules-output-items-properties-repository_updated.md
@@ -0,0 +1,15 @@
+# Untitled string in list-modules output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/repository_updated
+```
+
+Date and time of last modification to remote repodata
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-modules-output.json\*](cluster/list-modules-output.json "open original schema") |
+
+## repository\_updated Type
+
+`string`
diff --git a/core/list-modules-output-items-properties-source.md b/core/list-modules-output-items-properties-source.md
new file mode 100644
index 000000000..ac833121d
--- /dev/null
+++ b/core/list-modules-output-items-properties-source.md
@@ -0,0 +1,15 @@
+# Untitled string in list-modules output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/source
+```
+
+URL of package inside a container registry. The URL must not contain the prefix 'docker://' or similar
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-modules-output.json\*](cluster/list-modules-output.json "open original schema") |
+
+## source Type
+
+`string`
diff --git a/core/list-modules-output-items-properties-versions-items-properties-labels.md b/core/list-modules-output-items-properties-versions-items-properties-labels.md
new file mode 100644
index 000000000..2981a5fd6
--- /dev/null
+++ b/core/list-modules-output-items-properties-versions-items-properties-labels.md
@@ -0,0 +1,15 @@
+# Untitled object in list-modules output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/versions/items/properties/labels
+```
+
+Image label, see official specification
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-modules-output.json\*](cluster/list-modules-output.json "open original schema") |
+
+## labels Type
+
+`object` ([Details](list-modules-output-items-properties-versions-items-properties-labels.md))
diff --git a/core/list-modules-output-items-properties-versions-items-properties-tag.md b/core/list-modules-output-items-properties-versions-items-properties-tag.md
new file mode 100644
index 000000000..f31985d38
--- /dev/null
+++ b/core/list-modules-output-items-properties-versions-items-properties-tag.md
@@ -0,0 +1,15 @@
+# Untitled string in list-modules output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/versions/items/properties/tag
+```
+
+The package version which must be valid semantic version, like '1.0.0
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-modules-output.json\*](cluster/list-modules-output.json "open original schema") |
+
+## tag Type
+
+`string`
diff --git a/core/list-modules-output-items-properties-versions-items-properties-testing.md b/core/list-modules-output-items-properties-versions-items-properties-testing.md
new file mode 100644
index 000000000..5ca4e96d1
--- /dev/null
+++ b/core/list-modules-output-items-properties-versions-items-properties-testing.md
@@ -0,0 +1,15 @@
+# Untitled boolean in list-modules output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/versions/items/properties/testing
+```
+
+Set to 'true' if this version is pre-release according to semantic versioning ()
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-modules-output.json\*](cluster/list-modules-output.json "open original schema") |
+
+## testing Type
+
+`boolean`
diff --git a/core/list-modules-output-items-properties-versions-items.md b/core/list-modules-output-items-properties-versions-items.md
new file mode 100644
index 000000000..166ea2119
--- /dev/null
+++ b/core/list-modules-output-items-properties-versions-items.md
@@ -0,0 +1,77 @@
+# Untitled object in list-modules output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/versions/items
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [list-modules-output.json\*](cluster/list-modules-output.json "open original schema") |
+
+## items Type
+
+`object` ([Details](list-modules-output-items-properties-versions-items.md))
+
+# items Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------ | :-------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [tag](#tag) | `string` | Required | cannot be null | [list-modules output](list-modules-output-items-properties-versions-items-properties-tag.md "http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/versions/items/properties/tag") |
+| [testing](#testing) | `boolean` | Required | cannot be null | [list-modules output](list-modules-output-items-properties-versions-items-properties-testing.md "http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/versions/items/properties/testing") |
+| [labels](#labels) | `object` | Required | cannot be null | [list-modules output](list-modules-output-items-properties-versions-items-properties-labels.md "http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/versions/items/properties/labels") |
+
+## tag
+
+The package version which must be valid semantic version, like '1.0.0
+
+`tag`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-modules output](list-modules-output-items-properties-versions-items-properties-tag.md "http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/versions/items/properties/tag")
+
+### tag Type
+
+`string`
+
+## testing
+
+Set to 'true' if this version is pre-release according to semantic versioning ()
+
+`testing`
+
+* is required
+
+* Type: `boolean`
+
+* cannot be null
+
+* defined in: [list-modules output](list-modules-output-items-properties-versions-items-properties-testing.md "http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/versions/items/properties/testing")
+
+### testing Type
+
+`boolean`
+
+## labels
+
+Image label, see official specification
+
+`labels`
+
+* is required
+
+* Type: `object` ([Details](list-modules-output-items-properties-versions-items-properties-labels.md))
+
+* cannot be null
+
+* defined in: [list-modules output](list-modules-output-items-properties-versions-items-properties-labels.md "http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/versions/items/properties/labels")
+
+### labels Type
+
+`object` ([Details](list-modules-output-items-properties-versions-items-properties-labels.md))
diff --git a/core/list-modules-output-items-properties-versions.md b/core/list-modules-output-items-properties-versions.md
new file mode 100644
index 000000000..f8fb8fa39
--- /dev/null
+++ b/core/list-modules-output-items-properties-versions.md
@@ -0,0 +1,15 @@
+# Untitled array in list-modules output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/versions
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-modules-output.json\*](cluster/list-modules-output.json "open original schema") |
+
+## versions Type
+
+`object[]` ([Details](list-modules-output-items-properties-versions-items.md))
diff --git a/core/list-modules-output-items-updates-items-properties-digest.md b/core/list-modules-output-items-updates-items-properties-digest.md
new file mode 100644
index 000000000..4da29bdca
--- /dev/null
+++ b/core/list-modules-output-items-updates-items-properties-digest.md
@@ -0,0 +1,15 @@
+# Untitled string in list-modules output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-modules-output.json#/items/updates/items/properties/digest
+```
+
+Image digest
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-modules-output.json\*](cluster/list-modules-output.json "open original schema") |
+
+## digest Type
+
+`string`
diff --git a/core/list-modules-output-items-updates-items-properties-id.md b/core/list-modules-output-items-updates-items-properties-id.md
new file mode 100644
index 000000000..70b0af21a
--- /dev/null
+++ b/core/list-modules-output-items-updates-items-properties-id.md
@@ -0,0 +1,15 @@
+# Untitled string in list-modules output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-modules-output.json#/items/updates/items/properties/id
+```
+
+Unique name of a module instance
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-modules-output.json\*](cluster/list-modules-output.json "open original schema") |
+
+## id Type
+
+`string`
diff --git a/core/list-modules-output-items-updates-items-properties-node.md b/core/list-modules-output-items-updates-items-properties-node.md
new file mode 100644
index 000000000..e27393c47
--- /dev/null
+++ b/core/list-modules-output-items-updates-items-properties-node.md
@@ -0,0 +1,15 @@
+# Untitled string in list-modules output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-modules-output.json#/items/updates/items/properties/node
+```
+
+Id of the node where the instance is running
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-modules-output.json\*](cluster/list-modules-output.json "open original schema") |
+
+## node Type
+
+`string`
diff --git a/core/list-modules-output-items-updates-items-properties-source.md b/core/list-modules-output-items-updates-items-properties-source.md
new file mode 100644
index 000000000..9795db5a4
--- /dev/null
+++ b/core/list-modules-output-items-updates-items-properties-source.md
@@ -0,0 +1,15 @@
+# Untitled string in list-modules output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-modules-output.json#/items/updates/items/properties/source
+```
+
+The URL of the container image registry
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-modules-output.json\*](cluster/list-modules-output.json "open original schema") |
+
+## source Type
+
+`string`
diff --git a/core/list-modules-output-items-updates-items-properties-update.md b/core/list-modules-output-items-updates-items-properties-update.md
new file mode 100644
index 000000000..3b8a30f52
--- /dev/null
+++ b/core/list-modules-output-items-updates-items-properties-update.md
@@ -0,0 +1,15 @@
+# Untitled string in list-modules output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-modules-output.json#/items/updates/items/properties/update
+```
+
+A valid semantic version extracted from image tag wich should be greater than 'version' field
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-modules-output.json\*](cluster/list-modules-output.json "open original schema") |
+
+## update Type
+
+`string`
diff --git a/core/list-modules-output-items-updates-items-properties-version.md b/core/list-modules-output-items-updates-items-properties-version.md
new file mode 100644
index 000000000..22a3ebc22
--- /dev/null
+++ b/core/list-modules-output-items-updates-items-properties-version.md
@@ -0,0 +1,15 @@
+# Untitled string in list-modules output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-modules-output.json#/items/updates/items/properties/version
+```
+
+A valid semantic version extracted from image tag
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-modules-output.json\*](cluster/list-modules-output.json "open original schema") |
+
+## version Type
+
+`string`
diff --git a/core/list-modules-output-items-updates-items.md b/core/list-modules-output-items-updates-items.md
new file mode 100644
index 000000000..327f50c4f
--- /dev/null
+++ b/core/list-modules-output-items-updates-items.md
@@ -0,0 +1,134 @@
+# Untitled object in list-modules output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-modules-output.json#/items/updates/items
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [list-modules-output.json\*](cluster/list-modules-output.json "open original schema") |
+
+## items Type
+
+`object` ([Details](list-modules-output-items-updates-items.md))
+
+# items Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------ | :------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [id](#id) | `string` | Required | cannot be null | [list-modules output](list-modules-output-items-updates-items-properties-id.md "http://schema.nethserver.org/cluster/list-modules-output.json#/items/updates/items/properties/id") |
+| [node](#node) | `string` | Required | cannot be null | [list-modules output](list-modules-output-items-updates-items-properties-node.md "http://schema.nethserver.org/cluster/list-modules-output.json#/items/updates/items/properties/node") |
+| [digest](#digest) | `string` | Required | cannot be null | [list-modules output](list-modules-output-items-updates-items-properties-digest.md "http://schema.nethserver.org/cluster/list-modules-output.json#/items/updates/items/properties/digest") |
+| [source](#source) | `string` | Required | cannot be null | [list-modules output](list-modules-output-items-updates-items-properties-source.md "http://schema.nethserver.org/cluster/list-modules-output.json#/items/updates/items/properties/source") |
+| [version](#version) | `string` | Required | cannot be null | [list-modules output](list-modules-output-items-updates-items-properties-version.md "http://schema.nethserver.org/cluster/list-modules-output.json#/items/updates/items/properties/version") |
+| [update](#update) | `string` | Required | cannot be null | [list-modules output](list-modules-output-items-updates-items-properties-update.md "http://schema.nethserver.org/cluster/list-modules-output.json#/items/updates/items/properties/update") |
+
+## id
+
+Unique name of a module instance
+
+`id`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-modules output](list-modules-output-items-updates-items-properties-id.md "http://schema.nethserver.org/cluster/list-modules-output.json#/items/updates/items/properties/id")
+
+### id Type
+
+`string`
+
+## node
+
+Id of the node where the instance is running
+
+`node`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-modules output](list-modules-output-items-updates-items-properties-node.md "http://schema.nethserver.org/cluster/list-modules-output.json#/items/updates/items/properties/node")
+
+### node Type
+
+`string`
+
+## digest
+
+Image digest
+
+`digest`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-modules output](list-modules-output-items-updates-items-properties-digest.md "http://schema.nethserver.org/cluster/list-modules-output.json#/items/updates/items/properties/digest")
+
+### digest Type
+
+`string`
+
+## source
+
+The URL of the container image registry
+
+`source`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-modules output](list-modules-output-items-updates-items-properties-source.md "http://schema.nethserver.org/cluster/list-modules-output.json#/items/updates/items/properties/source")
+
+### source Type
+
+`string`
+
+## version
+
+A valid semantic version extracted from image tag
+
+`version`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-modules output](list-modules-output-items-updates-items-properties-version.md "http://schema.nethserver.org/cluster/list-modules-output.json#/items/updates/items/properties/version")
+
+### version Type
+
+`string`
+
+## update
+
+A valid semantic version extracted from image tag wich should be greater than 'version' field
+
+`update`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-modules output](list-modules-output-items-updates-items-properties-update.md "http://schema.nethserver.org/cluster/list-modules-output.json#/items/updates/items/properties/update")
+
+### update Type
+
+`string`
diff --git a/core/list-modules-output-items-updates.md b/core/list-modules-output-items-updates.md
new file mode 100644
index 000000000..628560024
--- /dev/null
+++ b/core/list-modules-output-items-updates.md
@@ -0,0 +1,15 @@
+# Untitled array in list-modules output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-modules-output.json#/items/updates
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-modules-output.json\*](cluster/list-modules-output.json "open original schema") |
+
+## updates Type
+
+`object[]` ([Details](list-modules-output-items-updates-items.md))
diff --git a/core/list-modules-output-items.md b/core/list-modules-output-items.md
new file mode 100644
index 000000000..7f563d89c
--- /dev/null
+++ b/core/list-modules-output-items.md
@@ -0,0 +1,210 @@
+# Untitled object in list-modules output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-modules-output.json#/items
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [list-modules-output.json\*](cluster/list-modules-output.json "open original schema") |
+
+## items Type
+
+`object` ([Details](list-modules-output-items.md))
+
+# items Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :----------------------------------------- | :------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [name](#name) | `string` | Required | cannot be null | [list-modules output](list-modules-output-items-properties-name.md "http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/name") |
+| [description](#description) | `object` | Required | cannot be null | [list-modules output](list-modules-output-items-properties-description.md "http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/description") |
+| [logo](#logo) | `string` | Required | can be null | [list-modules output](list-modules-output-items-properties-logo.md "http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/logo") |
+| [categories](#categories) | `array` | Required | cannot be null | [list-modules output](list-modules-output-items-properties-categories.md "http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/categories") |
+| [authors](#authors) | `array` | Required | cannot be null | [list-modules output](list-modules-output-items-properties-authors.md "http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/authors") |
+| [docs](#docs) | `object` | Required | cannot be null | [list-modules output](list-modules-output-items-properties-docs.md "http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/docs") |
+| [source](#source) | `string` | Required | cannot be null | [list-modules output](list-modules-output-items-properties-source.md "http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/source") |
+| [repository](#repository) | `string` | Optional | cannot be null | [list-modules output](list-modules-output-items-properties-repository.md "http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/repository") |
+| [repository\_updated](#repository_updated) | `string` | Optional | cannot be null | [list-modules output](list-modules-output-items-properties-repository_updated.md "http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/repository_updated") |
+| [versions](#versions) | `array` | Required | cannot be null | [list-modules output](list-modules-output-items-properties-versions.md "http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/versions") |
+
+## name
+
+Unique name of a package
+
+`name`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-modules output](list-modules-output-items-properties-name.md "http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/name")
+
+### name Type
+
+`string`
+
+## description
+
+A map of language codes (eg. en, it) with the translated description
+
+`description`
+
+* is required
+
+* Type: `object` ([Details](list-modules-output-items-properties-description.md))
+
+* cannot be null
+
+* defined in: [list-modules output](list-modules-output-items-properties-description.md "http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/description")
+
+### description Type
+
+`object` ([Details](list-modules-output-items-properties-description.md))
+
+## logo
+
+The filename of the logo. The logo must be a PNG image of 256x256 pixels
+
+`logo`
+
+* is required
+
+* Type: `string`
+
+* can be null
+
+* defined in: [list-modules output](list-modules-output-items-properties-logo.md "http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/logo")
+
+### logo Type
+
+`string`
+
+## categories
+
+
+
+`categories`
+
+* is required
+
+* Type: `string[]`
+
+* cannot be null
+
+* defined in: [list-modules output](list-modules-output-items-properties-categories.md "http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/categories")
+
+### categories Type
+
+`string[]`
+
+## authors
+
+
+
+`authors`
+
+* is required
+
+* Type: `object[]` ([Details](list-modules-output-items-properties-authors-items.md))
+
+* cannot be null
+
+* defined in: [list-modules output](list-modules-output-items-properties-authors.md "http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/authors")
+
+### authors Type
+
+`object[]` ([Details](list-modules-output-items-properties-authors-items.md))
+
+## docs
+
+
+
+`docs`
+
+* is required
+
+* Type: `object` ([Details](list-modules-output-items-properties-docs.md))
+
+* cannot be null
+
+* defined in: [list-modules output](list-modules-output-items-properties-docs.md "http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/docs")
+
+### docs Type
+
+`object` ([Details](list-modules-output-items-properties-docs.md))
+
+## source
+
+URL of package inside a container registry. The URL must not contain the prefix 'docker://' or similar
+
+`source`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-modules output](list-modules-output-items-properties-source.md "http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/source")
+
+### source Type
+
+`string`
+
+## repository
+
+The internal ID of the repository inside redis
+
+`repository`
+
+* is optional
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-modules output](list-modules-output-items-properties-repository.md "http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/repository")
+
+### repository Type
+
+`string`
+
+## repository\_updated
+
+Date and time of last modification to remote repodata
+
+`repository_updated`
+
+* is optional
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-modules output](list-modules-output-items-properties-repository_updated.md "http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/repository_updated")
+
+### repository\_updated Type
+
+`string`
+
+## versions
+
+
+
+`versions`
+
+* is required
+
+* Type: `object[]` ([Details](list-modules-output-items-properties-versions-items.md))
+
+* cannot be null
+
+* defined in: [list-modules output](list-modules-output-items-properties-versions.md "http://schema.nethserver.org/cluster/list-modules-output.json#/items/properties/versions")
+
+### versions Type
+
+`object[]` ([Details](list-modules-output-items-properties-versions-items.md))
diff --git a/core/list-modules-output.json b/core/list-modules-output.json
new file mode 100644
index 000000000..94cd41122
--- /dev/null
+++ b/core/list-modules-output.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"list-modules output","description":"List modules output","$id":"http://schema.nethserver.org/cluster/list-modules-output.json","examples":[[{"name":"dokuwiki","description":{"en":"Auto-generated description for traefik"},"logo":"http://127.0.0.1:8000/logo.png","screenshots":["http://127.0.0.1:8000/screenshots/template%3Adokuwiki_template.png"],"categories":["unknown"],"authors":[{"name":"unknown","email":"info@nethserver.org"}],"docs":{"documentation_url":"https://docs.nethserver.org","bug_url":"https://github.com/NethServer/dev","code_url":"https://github.com/NethServer/"},"source":"ghcr.io/nethserver/dokuwiki","versions":[{"tag":"0.0.2","testing":false,"labels":{"io.buildah.version":"1.19.6","org.nethserver.rootfull":"0","org.nethserver.tcp_ports_demand":"1"}},{"tag":"0.0.1","testing":false,"labels":{"io.buildah.version":"1.19.6","org.nethserver/rootfull":"0","org.nethserver/tcp_ports_demand":"1"}},{"tag":"0.0.1-alpha1","testing":true,"labels":{"io.buildah.version":"1.19.6","org.nethserver/rootfull":"0","org.nethserver/tcp_ports_demand":"1"}}],"repository":"t3","repository_updated":"Mon, 28 Jun 2021 14:42:44 GMT","updates":[{"id":"dokuwiki2","node":"1","digest":"sha256:929465c177d9e40559b3fa838f2e429060ff7e8c3e4e1a12076b3304ad562982","source":"ghcr.io/nethserver/dokuwiki","version":"0.0.1-alpha1","update":"0.0.2"}],"installed":[[{"id":"dokuwiki2","node":"1","digest":"sha256:929465c177d9e40559b3fa838f2e429060ff7e8c3e4e1a12076b3304ad562982","source":"ghcr.io/nethserver/dokuwiki","version":"0.0.1-alpha1"},{"id":"dokuwiki1","node":"1","digest":"sha256:929465c177d9e40559b3fa838f2e429060ff7e8c3e4e1a12076b3304ad562982","source":"ghcr.io/nethserver/dokuwiki","version":"0.0.1-alpha1"}]]}]],"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Unique name of a package"},"description":{"type":"object","description":"A map of language codes (eg. en, it) with the translated description"},"logo":{"type":["string","null"],"description":"The filename of the logo. The logo must be a PNG image of 256x256 pixels"},"categories":{"type":"array","items":{"type":"string"}},"authors":{"type":"array","items":{"type":"object","parameters":{"name":{"type":"string","description":"Author full name"},"email":{"type":"idn-email","description":"Author mail address"}}}},"docs":{"type":"object","parameters":{"documentation_url":{"type":"uri","description":"Link to the package documentation"},"bug_url":{"type":"uri","description":"Link to the package issue tracker"},"code_url":{"type":"uri","description":"Link to the source code repository"}},"required":["documentation_url","bug_url","code_url"]},"source":{"type":"string","description":"URL of package inside a container registry. The URL must not contain the prefix 'docker://' or similar"},"repository":{"type":"string","description":"The internal ID of the repository inside redis"},"repository_updated":{"type":"string","description":"Date and time of last modification to remote repodata"},"versions":{"type":"array","items":{"type":"object","properties":{"tag":{"type":"string","description":"The package version which must be valid semantic version, like '1.0.0"},"testing":{"type":"boolean","description":"Set to 'true' if this version is pre-release according to semantic versioning (https://semver.org)"},"labels":{"type":"object","description":"Image label, see official specification https://github.com/opencontainers/image-spec/blob/master/annotations.md"}},"required":["tag","testing","labels"]}}},"updates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique name of a module instance"},"node":{"type":"string","description":"Id of the node where the instance is running"},"digest":{"type":"string","description":"Image digest"},"source":{"type":"string","description":"The URL of the container image registry"},"version":{"type":"string","description":"A valid semantic version extracted from image tag"},"update":{"type":"string","description":"A valid semantic version extracted from image tag wich should be greater than 'version' field"}},"required":["id","node","digest","source","version","update"]}},"installed":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique name of a module instance"},"node":{"type":"string","description":"Id of the node where the instance is running"},"digest":{"type":"string","description":"Image digest"},"source":{"type":"string","description":"The URL of the container image registry"},"version":{"type":"string","description":"A valid semantic version extracted from image tag"}},"required":["id","node","digest","source","version"]}},"required":["name","description","logo","categories","authors","docs","source","versions","installed","updates"]}}
diff --git a/core/list-modules-output.md b/core/list-modules-output.md
new file mode 100644
index 000000000..e811c8d43
--- /dev/null
+++ b/core/list-modules-output.md
@@ -0,0 +1,106 @@
+# list-modules output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-modules-output.json
+```
+
+List modules output
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-modules-output.json](cluster/list-modules-output.json "open original schema") |
+
+## list-modules output Type
+
+`object[]` ([Details](list-modules-output-items.md))
+
+## list-modules output Examples
+
+```json
+[
+ {
+ "name": "dokuwiki",
+ "description": {
+ "en": "Auto-generated description for traefik"
+ },
+ "logo": "http://127.0.0.1:8000/logo.png",
+ "screenshots": [
+ "http://127.0.0.1:8000/screenshots/template%3Adokuwiki_template.png"
+ ],
+ "categories": [
+ "unknown"
+ ],
+ "authors": [
+ {
+ "name": "unknown",
+ "email": "info@nethserver.org"
+ }
+ ],
+ "docs": {
+ "documentation_url": "https://docs.nethserver.org",
+ "bug_url": "https://github.com/NethServer/dev",
+ "code_url": "https://github.com/NethServer/"
+ },
+ "source": "ghcr.io/nethserver/dokuwiki",
+ "versions": [
+ {
+ "tag": "0.0.2",
+ "testing": false,
+ "labels": {
+ "io.buildah.version": "1.19.6",
+ "org.nethserver.rootfull": "0",
+ "org.nethserver.tcp_ports_demand": "1"
+ }
+ },
+ {
+ "tag": "0.0.1",
+ "testing": false,
+ "labels": {
+ "io.buildah.version": "1.19.6",
+ "org.nethserver/rootfull": "0",
+ "org.nethserver/tcp_ports_demand": "1"
+ }
+ },
+ {
+ "tag": "0.0.1-alpha1",
+ "testing": true,
+ "labels": {
+ "io.buildah.version": "1.19.6",
+ "org.nethserver/rootfull": "0",
+ "org.nethserver/tcp_ports_demand": "1"
+ }
+ }
+ ],
+ "repository": "t3",
+ "repository_updated": "Mon, 28 Jun 2021 14:42:44 GMT",
+ "updates": [
+ {
+ "id": "dokuwiki2",
+ "node": "1",
+ "digest": "sha256:929465c177d9e40559b3fa838f2e429060ff7e8c3e4e1a12076b3304ad562982",
+ "source": "ghcr.io/nethserver/dokuwiki",
+ "version": "0.0.1-alpha1",
+ "update": "0.0.2"
+ }
+ ],
+ "installed": [
+ [
+ {
+ "id": "dokuwiki2",
+ "node": "1",
+ "digest": "sha256:929465c177d9e40559b3fa838f2e429060ff7e8c3e4e1a12076b3304ad562982",
+ "source": "ghcr.io/nethserver/dokuwiki",
+ "version": "0.0.1-alpha1"
+ },
+ {
+ "id": "dokuwiki1",
+ "node": "1",
+ "digest": "sha256:929465c177d9e40559b3fa838f2e429060ff7e8c3e4e1a12076b3304ad562982",
+ "source": "ghcr.io/nethserver/dokuwiki",
+ "version": "0.0.1-alpha1"
+ }
+ ]
+ ]
+ }
+]
+```
diff --git a/core/list-output-properties-objects.md b/core/list-output-properties-objects.md
new file mode 100644
index 000000000..c4fefa9b2
--- /dev/null
+++ b/core/list-output-properties-objects.md
@@ -0,0 +1,19 @@
+# Untitled array in list output Schema
+
+```txt
+http://schema.nethserver.org/example/list-output.json#/properties/objects
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-output.json\*](example/list-output.json "open original schema") |
+
+## objects Type
+
+`array`
+
+## objects Constraints
+
+**minimum number of items**: the minimum number of items for this array is: `1`
diff --git a/core/list-output.json b/core/list-output.json
new file mode 100644
index 000000000..daa1697b5
--- /dev/null
+++ b/core/list-output.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"list output","$id":"http://schema.nethserver.org/example/list-output.json","type":"object","required":["objects"],"properties":{"objects":{"type":"array","minItems":1}}}
diff --git a/core/list-output.md b/core/list-output.md
new file mode 100644
index 000000000..bf41201fd
--- /dev/null
+++ b/core/list-output.md
@@ -0,0 +1,43 @@
+# list output Schema
+
+```txt
+http://schema.nethserver.org/example/list-output.json
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [list-output.json](example/list-output.json "open original schema") |
+
+## list output Type
+
+`object` ([list output](list-output.md))
+
+# list output Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------ | :------ | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------- |
+| [objects](#objects) | `array` | Required | cannot be null | [list output](list-output-properties-objects.md "http://schema.nethserver.org/example/list-output.json#/properties/objects") |
+
+## objects
+
+
+
+`objects`
+
+* is required
+
+* Type: `array`
+
+* cannot be null
+
+* defined in: [list output](list-output-properties-objects.md "http://schema.nethserver.org/example/list-output.json#/properties/objects")
+
+### objects Type
+
+`array`
+
+### objects Constraints
+
+**minimum number of items**: the minimum number of items for this array is: `1`
diff --git a/core/list-repositories-input.json b/core/list-repositories-input.json
new file mode 100644
index 000000000..16f674ceb
--- /dev/null
+++ b/core/list-repositories-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"list-repositories input","$id":"http://schema.nethserver.org/cluster/list-repositories-input.json","description":"The action does not accept any input","examples":[null],"type":"null"}
diff --git a/core/list-repositories-input.md b/core/list-repositories-input.md
new file mode 100644
index 000000000..586e49275
--- /dev/null
+++ b/core/list-repositories-input.md
@@ -0,0 +1,21 @@
+# list-repositories input Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-repositories-input.json
+```
+
+The action does not accept any input
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-repositories-input.json](cluster/list-repositories-input.json "open original schema") |
+
+## list-repositories input Type
+
+`null`, the value must be null ([list-repositories input](list-repositories-input.md))
+
+## list-repositories input Examples
+
+```json
+null
+```
diff --git a/core/list-repositories-output-items-properties-name.md b/core/list-repositories-output-items-properties-name.md
new file mode 100644
index 000000000..12866c308
--- /dev/null
+++ b/core/list-repositories-output-items-properties-name.md
@@ -0,0 +1,15 @@
+# Untitled string in list-repositories output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-repositories-output.json#/items/properties/name
+```
+
+Unique repository name
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-repositories-output.json\*](cluster/list-repositories-output.json "open original schema") |
+
+## name Type
+
+`string`
diff --git a/core/list-repositories-output-items-properties-status.md b/core/list-repositories-output-items-properties-status.md
new file mode 100644
index 000000000..5f4a7026b
--- /dev/null
+++ b/core/list-repositories-output-items-properties-status.md
@@ -0,0 +1,15 @@
+# Untitled boolean in list-repositories output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-repositories-output.json#/items/properties/status
+```
+
+Enable or disable the repository. When 'true', the repository is enabled.
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-repositories-output.json\*](cluster/list-repositories-output.json "open original schema") |
+
+## status Type
+
+`boolean`
diff --git a/core/list-repositories-output-items-properties-testing.md b/core/list-repositories-output-items-properties-testing.md
new file mode 100644
index 000000000..5ebb3520c
--- /dev/null
+++ b/core/list-repositories-output-items-properties-testing.md
@@ -0,0 +1,15 @@
+# Untitled boolean in list-repositories output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-repositories-output.json#/items/properties/testing
+```
+
+Enable or disable access to testing images. When 'true', the repository will list testing images.
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-repositories-output.json\*](cluster/list-repositories-output.json "open original schema") |
+
+## testing Type
+
+`boolean`
diff --git a/core/list-repositories-output-items-properties-url.md b/core/list-repositories-output-items-properties-url.md
new file mode 100644
index 000000000..cbe642db2
--- /dev/null
+++ b/core/list-repositories-output-items-properties-url.md
@@ -0,0 +1,15 @@
+# Untitled string in list-repositories output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-repositories-output.json#/items/properties/url
+```
+
+Base URL of the repository
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-repositories-output.json\*](cluster/list-repositories-output.json "open original schema") |
+
+## url Type
+
+`string`
diff --git a/core/list-repositories-output-items.md b/core/list-repositories-output-items.md
new file mode 100644
index 000000000..ffd0d5c8f
--- /dev/null
+++ b/core/list-repositories-output-items.md
@@ -0,0 +1,96 @@
+# Untitled object in list-repositories output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-repositories-output.json#/items
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [list-repositories-output.json\*](cluster/list-repositories-output.json "open original schema") |
+
+## items Type
+
+`object` ([Details](list-repositories-output-items.md))
+
+# items Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------ | :-------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| [name](#name) | `string` | Required | cannot be null | [list-repositories output](list-repositories-output-items-properties-name.md "http://schema.nethserver.org/cluster/list-repositories-output.json#/items/properties/name") |
+| [url](#url) | `string` | Required | cannot be null | [list-repositories output](list-repositories-output-items-properties-url.md "http://schema.nethserver.org/cluster/list-repositories-output.json#/items/properties/url") |
+| [testing](#testing) | `boolean` | Required | cannot be null | [list-repositories output](list-repositories-output-items-properties-testing.md "http://schema.nethserver.org/cluster/list-repositories-output.json#/items/properties/testing") |
+| [status](#status) | `boolean` | Required | cannot be null | [list-repositories output](list-repositories-output-items-properties-status.md "http://schema.nethserver.org/cluster/list-repositories-output.json#/items/properties/status") |
+
+## name
+
+Unique repository name
+
+`name`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-repositories output](list-repositories-output-items-properties-name.md "http://schema.nethserver.org/cluster/list-repositories-output.json#/items/properties/name")
+
+### name Type
+
+`string`
+
+## url
+
+Base URL of the repository
+
+`url`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-repositories output](list-repositories-output-items-properties-url.md "http://schema.nethserver.org/cluster/list-repositories-output.json#/items/properties/url")
+
+### url Type
+
+`string`
+
+## testing
+
+Enable or disable access to testing images. When 'true', the repository will list testing images.
+
+`testing`
+
+* is required
+
+* Type: `boolean`
+
+* cannot be null
+
+* defined in: [list-repositories output](list-repositories-output-items-properties-testing.md "http://schema.nethserver.org/cluster/list-repositories-output.json#/items/properties/testing")
+
+### testing Type
+
+`boolean`
+
+## status
+
+Enable or disable the repository. When 'true', the repository is enabled.
+
+`status`
+
+* is required
+
+* Type: `boolean`
+
+* cannot be null
+
+* defined in: [list-repositories output](list-repositories-output-items-properties-status.md "http://schema.nethserver.org/cluster/list-repositories-output.json#/items/properties/status")
+
+### status Type
+
+`boolean`
diff --git a/core/list-repositories-output.json b/core/list-repositories-output.json
new file mode 100644
index 000000000..98765958a
--- /dev/null
+++ b/core/list-repositories-output.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"list-repositories output","description":"Output schema of the list-repositories action","$id":"http://schema.nethserver.org/cluster/list-repositories-output.json","examples":[[{"name":"repository1","url":"https://repository1.nethserver.org/","testing":false,"status":true},{"name":"repository2","url":"https://repository2.nethserver.org/","testing":true,"status":true}]],"type":"array","items":{"type":"object","properties":{"name":{"description":"Unique repository name","type":"string"},"url":{"description":"Base URL of the repository","type":"string"},"testing":{"description":"Enable or disable access to testing images. When 'true', the repository will list testing images.","type":"boolean"},"status":{"description":"Enable or disable the repository. When 'true', the repository is enabled.","type":"boolean"}},"required":["name","url","testing","status"]}}
diff --git a/core/list-repositories-output.md b/core/list-repositories-output.md
new file mode 100644
index 000000000..d314b5b2b
--- /dev/null
+++ b/core/list-repositories-output.md
@@ -0,0 +1,34 @@
+# list-repositories output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-repositories-output.json
+```
+
+Output schema of the list-repositories action
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-repositories-output.json](cluster/list-repositories-output.json "open original schema") |
+
+## list-repositories output Type
+
+`object[]` ([Details](list-repositories-output-items.md))
+
+## list-repositories output Examples
+
+```json
+[
+ {
+ "name": "repository1",
+ "url": "https://repository1.nethserver.org/",
+ "testing": false,
+ "status": true
+ },
+ {
+ "name": "repository2",
+ "url": "https://repository2.nethserver.org/",
+ "testing": true,
+ "status": true
+ }
+]
+```
diff --git a/core/list-service-providers-input-properties-filter-clauses.md b/core/list-service-providers-input-properties-filter-clauses.md
new file mode 100644
index 000000000..c9494d10d
--- /dev/null
+++ b/core/list-service-providers-input-properties-filter-clauses.md
@@ -0,0 +1,15 @@
+# Filter clauses Schema
+
+```txt
+http://schema.nethserver.org/agent/list-service-providers-input.json#/properties/filter
+```
+
+Return entries matching all the given clauses
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-service-providers-input.json\*](agent/list-service-providers-input.json "open original schema") |
+
+## filter Type
+
+`object` ([Filter clauses](list-service-providers-input-properties-filter-clauses.md))
diff --git a/core/list-service-providers-input-properties-service-name.md b/core/list-service-providers-input-properties-service-name.md
new file mode 100644
index 000000000..cb725063b
--- /dev/null
+++ b/core/list-service-providers-input-properties-service-name.md
@@ -0,0 +1,19 @@
+# Service name Schema
+
+```txt
+http://schema.nethserver.org/agent/list-service-providers-input.json#/properties/service
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-service-providers-input.json\*](agent/list-service-providers-input.json "open original schema") |
+
+## service Type
+
+`string` ([Service name](list-service-providers-input-properties-service-name.md))
+
+## service Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/list-service-providers-input-properties-transport-protocol.md b/core/list-service-providers-input-properties-transport-protocol.md
new file mode 100644
index 000000000..a549756a9
--- /dev/null
+++ b/core/list-service-providers-input-properties-transport-protocol.md
@@ -0,0 +1,33 @@
+# Transport protocol Schema
+
+```txt
+http://schema.nethserver.org/agent/list-service-providers-input.json#/properties/transport
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-service-providers-input.json\*](agent/list-service-providers-input.json "open original schema") |
+
+## transport Type
+
+`string` ([Transport protocol](list-service-providers-input-properties-transport-protocol.md))
+
+## transport Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## transport Examples
+
+```json
+"tcp"
+```
+
+```json
+"udp"
+```
+
+```json
+"http"
+```
diff --git a/core/list-service-providers-input.json b/core/list-service-providers-input.json
new file mode 100644
index 000000000..1dcafe527
--- /dev/null
+++ b/core/list-service-providers-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"list-service-providers input","$id":"http://schema.nethserver.org/agent/list-service-providers-input.json","description":"Input schema of the basic list-service-providers action","examples":[{"service":"ldap","transport":"tcp"},{"service":"ldap","transport":"tcp","filter":{"node":"3"}}],"type":"object","required":["service"],"properties":{"service":{"title":"Service name","type":"string","minLength":1},"transport":{"title":"Transport protocol","examples":["tcp","udp","http"],"type":"string","minLength":1},"filter":{"title":"Filter clauses","description":"Return entries matching all the given clauses","type":"object"}}}
diff --git a/core/list-service-providers-input.md b/core/list-service-providers-input.md
new file mode 100644
index 000000000..7db1ee6fb
--- /dev/null
+++ b/core/list-service-providers-input.md
@@ -0,0 +1,118 @@
+# list-service-providers input Schema
+
+```txt
+http://schema.nethserver.org/agent/list-service-providers-input.json
+```
+
+Input schema of the basic list-service-providers action
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [list-service-providers-input.json](agent/list-service-providers-input.json "open original schema") |
+
+## list-service-providers input Type
+
+`object` ([list-service-providers input](list-service-providers-input.md))
+
+## list-service-providers input Examples
+
+```json
+{
+ "service": "ldap",
+ "transport": "tcp"
+}
+```
+
+```json
+{
+ "service": "ldap",
+ "transport": "tcp",
+ "filter": {
+ "node": "3"
+ }
+}
+```
+
+# list-service-providers input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :---------------------- | :------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [service](#service) | `string` | Required | cannot be null | [list-service-providers input](list-service-providers-input-properties-service-name.md "http://schema.nethserver.org/agent/list-service-providers-input.json#/properties/service") |
+| [transport](#transport) | `string` | Optional | cannot be null | [list-service-providers input](list-service-providers-input-properties-transport-protocol.md "http://schema.nethserver.org/agent/list-service-providers-input.json#/properties/transport") |
+| [filter](#filter) | `object` | Optional | cannot be null | [list-service-providers input](list-service-providers-input-properties-filter-clauses.md "http://schema.nethserver.org/agent/list-service-providers-input.json#/properties/filter") |
+
+## service
+
+
+
+`service`
+
+* is required
+
+* Type: `string` ([Service name](list-service-providers-input-properties-service-name.md))
+
+* cannot be null
+
+* defined in: [list-service-providers input](list-service-providers-input-properties-service-name.md "http://schema.nethserver.org/agent/list-service-providers-input.json#/properties/service")
+
+### service Type
+
+`string` ([Service name](list-service-providers-input-properties-service-name.md))
+
+### service Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## transport
+
+
+
+`transport`
+
+* is optional
+
+* Type: `string` ([Transport protocol](list-service-providers-input-properties-transport-protocol.md))
+
+* cannot be null
+
+* defined in: [list-service-providers input](list-service-providers-input-properties-transport-protocol.md "http://schema.nethserver.org/agent/list-service-providers-input.json#/properties/transport")
+
+### transport Type
+
+`string` ([Transport protocol](list-service-providers-input-properties-transport-protocol.md))
+
+### transport Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+### transport Examples
+
+```json
+"tcp"
+```
+
+```json
+"udp"
+```
+
+```json
+"http"
+```
+
+## filter
+
+Return entries matching all the given clauses
+
+`filter`
+
+* is optional
+
+* Type: `object` ([Filter clauses](list-service-providers-input-properties-filter-clauses.md))
+
+* cannot be null
+
+* defined in: [list-service-providers input](list-service-providers-input-properties-filter-clauses.md "http://schema.nethserver.org/agent/list-service-providers-input.json#/properties/filter")
+
+### filter Type
+
+`object` ([Filter clauses](list-service-providers-input-properties-filter-clauses.md))
diff --git a/core/list-service-providers-output-service-discovery-information-properties-module-id.md b/core/list-service-providers-output-service-discovery-information-properties-module-id.md
new file mode 100644
index 000000000..5e94cc991
--- /dev/null
+++ b/core/list-service-providers-output-service-discovery-information-properties-module-id.md
@@ -0,0 +1,15 @@
+# Module ID Schema
+
+```txt
+http://schema.nethserver.org/agent/list-service-providers-output.json#/itmes/properties/module_id
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-service-providers-output.json\*](agent/list-service-providers-output.json "open original schema") |
+
+## module\_id Type
+
+`string` ([Module ID](list-service-providers-output-service-discovery-information-properties-module-id.md))
diff --git a/core/list-service-providers-output-service-discovery-information-properties-module-uuid.md b/core/list-service-providers-output-service-discovery-information-properties-module-uuid.md
new file mode 100644
index 000000000..ef05ba28e
--- /dev/null
+++ b/core/list-service-providers-output-service-discovery-information-properties-module-uuid.md
@@ -0,0 +1,15 @@
+# Module UUID Schema
+
+```txt
+http://schema.nethserver.org/agent/list-service-providers-output.json#/itmes/properties/module_uuid
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-service-providers-output.json\*](agent/list-service-providers-output.json "open original schema") |
+
+## module\_uuid Type
+
+`string` ([Module UUID](list-service-providers-output-service-discovery-information-properties-module-uuid.md))
diff --git a/core/list-service-providers-output-service-discovery-information-properties-node-id.md b/core/list-service-providers-output-service-discovery-information-properties-node-id.md
new file mode 100644
index 000000000..cbc9df5d4
--- /dev/null
+++ b/core/list-service-providers-output-service-discovery-information-properties-node-id.md
@@ -0,0 +1,15 @@
+# Node ID Schema
+
+```txt
+http://schema.nethserver.org/agent/list-service-providers-output.json#/itmes/properties/node
+```
+
+Node identifier where the module is hosted
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-service-providers-output.json\*](agent/list-service-providers-output.json "open original schema") |
+
+## node Type
+
+`string` ([Node ID](list-service-providers-output-service-discovery-information-properties-node-id.md))
diff --git a/core/list-service-providers-output-service-discovery-information-properties-transport-protocol.md b/core/list-service-providers-output-service-discovery-information-properties-transport-protocol.md
new file mode 100644
index 000000000..e8a47b197
--- /dev/null
+++ b/core/list-service-providers-output-service-discovery-information-properties-transport-protocol.md
@@ -0,0 +1,33 @@
+# Transport protocol Schema
+
+```txt
+http://schema.nethserver.org/agent/list-service-providers-output.json#/itmes/properties/transport
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-service-providers-output.json\*](agent/list-service-providers-output.json "open original schema") |
+
+## transport Type
+
+`string` ([Transport protocol](list-service-providers-output-service-discovery-information-properties-transport-protocol.md))
+
+## transport Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## transport Examples
+
+```json
+"tcp"
+```
+
+```json
+"udp"
+```
+
+```json
+"http"
+```
diff --git a/core/list-service-providers-output-service-discovery-information-properties-ui-name.md b/core/list-service-providers-output-service-discovery-information-properties-ui-name.md
new file mode 100644
index 000000000..b3c09c091
--- /dev/null
+++ b/core/list-service-providers-output-service-discovery-information-properties-ui-name.md
@@ -0,0 +1,15 @@
+# UI name Schema
+
+```txt
+http://schema.nethserver.org/agent/list-service-providers-output.json#/itmes/properties/ui_name
+```
+
+Custom UI label of the module
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-service-providers-output.json\*](agent/list-service-providers-output.json "open original schema") |
+
+## ui\_name Type
+
+`string` ([UI name](list-service-providers-output-service-discovery-information-properties-ui-name.md))
diff --git a/core/list-service-providers-output-service-discovery-information.md b/core/list-service-providers-output-service-discovery-information.md
new file mode 100644
index 000000000..484c52edf
--- /dev/null
+++ b/core/list-service-providers-output-service-discovery-information.md
@@ -0,0 +1,133 @@
+# Service discovery information Schema
+
+```txt
+http://schema.nethserver.org/agent/list-service-providers-output.json#/itmes
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [list-service-providers-output.json\*](agent/list-service-providers-output.json "open original schema") |
+
+## itmes Type
+
+`object` ([Service discovery information](list-service-providers-output-service-discovery-information.md))
+
+# itmes Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :--------------------------- | :------- | :------- | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [module\_id](#module_id) | `string` | Required | cannot be null | [list-service-providers output](list-service-providers-output-service-discovery-information-properties-module-id.md "http://schema.nethserver.org/agent/list-service-providers-output.json#/itmes/properties/module_id") |
+| [module\_uuid](#module_uuid) | `string` | Required | cannot be null | [list-service-providers output](list-service-providers-output-service-discovery-information-properties-module-uuid.md "http://schema.nethserver.org/agent/list-service-providers-output.json#/itmes/properties/module_uuid") |
+| [node](#node) | `string` | Required | cannot be null | [list-service-providers output](list-service-providers-output-service-discovery-information-properties-node-id.md "http://schema.nethserver.org/agent/list-service-providers-output.json#/itmes/properties/node") |
+| [transport](#transport) | `string` | Required | cannot be null | [list-service-providers output](list-service-providers-output-service-discovery-information-properties-transport-protocol.md "http://schema.nethserver.org/agent/list-service-providers-output.json#/itmes/properties/transport") |
+| [ui\_name](#ui_name) | `string` | Required | can be null | [list-service-providers output](list-service-providers-output-service-discovery-information-properties-ui-name.md "http://schema.nethserver.org/agent/list-service-providers-output.json#/itmes/properties/ui_name") |
+
+## module\_id
+
+
+
+`module_id`
+
+* is required
+
+* Type: `string` ([Module ID](list-service-providers-output-service-discovery-information-properties-module-id.md))
+
+* cannot be null
+
+* defined in: [list-service-providers output](list-service-providers-output-service-discovery-information-properties-module-id.md "http://schema.nethserver.org/agent/list-service-providers-output.json#/itmes/properties/module_id")
+
+### module\_id Type
+
+`string` ([Module ID](list-service-providers-output-service-discovery-information-properties-module-id.md))
+
+## module\_uuid
+
+
+
+`module_uuid`
+
+* is required
+
+* Type: `string` ([Module UUID](list-service-providers-output-service-discovery-information-properties-module-uuid.md))
+
+* cannot be null
+
+* defined in: [list-service-providers output](list-service-providers-output-service-discovery-information-properties-module-uuid.md "http://schema.nethserver.org/agent/list-service-providers-output.json#/itmes/properties/module_uuid")
+
+### module\_uuid Type
+
+`string` ([Module UUID](list-service-providers-output-service-discovery-information-properties-module-uuid.md))
+
+## node
+
+Node identifier where the module is hosted
+
+`node`
+
+* is required
+
+* Type: `string` ([Node ID](list-service-providers-output-service-discovery-information-properties-node-id.md))
+
+* cannot be null
+
+* defined in: [list-service-providers output](list-service-providers-output-service-discovery-information-properties-node-id.md "http://schema.nethserver.org/agent/list-service-providers-output.json#/itmes/properties/node")
+
+### node Type
+
+`string` ([Node ID](list-service-providers-output-service-discovery-information-properties-node-id.md))
+
+## transport
+
+
+
+`transport`
+
+* is required
+
+* Type: `string` ([Transport protocol](list-service-providers-output-service-discovery-information-properties-transport-protocol.md))
+
+* cannot be null
+
+* defined in: [list-service-providers output](list-service-providers-output-service-discovery-information-properties-transport-protocol.md "http://schema.nethserver.org/agent/list-service-providers-output.json#/itmes/properties/transport")
+
+### transport Type
+
+`string` ([Transport protocol](list-service-providers-output-service-discovery-information-properties-transport-protocol.md))
+
+### transport Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+### transport Examples
+
+```json
+"tcp"
+```
+
+```json
+"udp"
+```
+
+```json
+"http"
+```
+
+## ui\_name
+
+Custom UI label of the module
+
+`ui_name`
+
+* is required
+
+* Type: `string` ([UI name](list-service-providers-output-service-discovery-information-properties-ui-name.md))
+
+* can be null
+
+* defined in: [list-service-providers output](list-service-providers-output-service-discovery-information-properties-ui-name.md "http://schema.nethserver.org/agent/list-service-providers-output.json#/itmes/properties/ui_name")
+
+### ui\_name Type
+
+`string` ([UI name](list-service-providers-output-service-discovery-information-properties-ui-name.md))
diff --git a/core/list-service-providers-output.json b/core/list-service-providers-output.json
new file mode 100644
index 000000000..99e938382
--- /dev/null
+++ b/core/list-service-providers-output.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"list-service-providers output","$id":"http://schema.nethserver.org/agent/list-service-providers-output.json","description":"Output schema of the basic list-service-providers action","examples":[[{"port":"143","host":"10.5.4.1","node":"1","user_domain":"dp.nethserver.net","module_uuid":"8d257122-0a7f-49c7-a620-08961a68cfa0","module_id":"mail1","ui_name":null}]],"type":"array","itmes":{"type":"object","title":"Service discovery information","required":["module_id","module_uuid","node","transport","ui_name"],"properties":{"module_id":{"title":"Module ID","type":"string"},"module_uuid":{"title":"Module UUID","type":"string"},"node":{"title":"Node ID","description":"Node identifier where the module is hosted","type":["string"]},"transport":{"title":"Transport protocol","examples":["tcp","udp","http"],"type":"string","minLength":1},"ui_name":{"title":"UI name","description":"Custom UI label of the module","type":["string","null"]}}}}
diff --git a/core/list-service-providers-output.md b/core/list-service-providers-output.md
new file mode 100644
index 000000000..48b5a630f
--- /dev/null
+++ b/core/list-service-providers-output.md
@@ -0,0 +1,31 @@
+# list-service-providers output Schema
+
+```txt
+http://schema.nethserver.org/agent/list-service-providers-output.json
+```
+
+Output schema of the basic list-service-providers action
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-service-providers-output.json](agent/list-service-providers-output.json "open original schema") |
+
+## list-service-providers output Type
+
+`array` ([list-service-providers output](list-service-providers-output.md))
+
+## list-service-providers output Examples
+
+```json
+[
+ {
+ "port": "143",
+ "host": "10.5.4.1",
+ "node": "1",
+ "user_domain": "dp.nethserver.net",
+ "module_uuid": "8d257122-0a7f-49c7-a620-08961a68cfa0",
+ "module_id": "mail1",
+ "ui_name": null
+ }
+]
+```
diff --git a/core/list-shortcuts-output-items-parameters-description.md b/core/list-shortcuts-output-items-parameters-description.md
new file mode 100644
index 000000000..b6252fb09
--- /dev/null
+++ b/core/list-shortcuts-output-items-parameters-description.md
@@ -0,0 +1,15 @@
+# Untitled string in list-shortcuts output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-shortcuts-output.json#/items/parameters/description
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-shortcuts-output.json\*](cluster/list-shortcuts-output.json "open original schema") |
+
+## description Type
+
+`string`
diff --git a/core/list-shortcuts-output-items-parameters-name.md b/core/list-shortcuts-output-items-parameters-name.md
new file mode 100644
index 000000000..e1b2e462a
--- /dev/null
+++ b/core/list-shortcuts-output-items-parameters-name.md
@@ -0,0 +1,15 @@
+# Untitled string in list-shortcuts output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-shortcuts-output.json#/items/parameters/name
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-shortcuts-output.json\*](cluster/list-shortcuts-output.json "open original schema") |
+
+## name Type
+
+`string`
diff --git a/core/list-shortcuts-output-items-parameters-path.md b/core/list-shortcuts-output-items-parameters-path.md
new file mode 100644
index 000000000..3d45bde14
--- /dev/null
+++ b/core/list-shortcuts-output-items-parameters-path.md
@@ -0,0 +1,15 @@
+# Untitled string in list-shortcuts output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-shortcuts-output.json#/items/parameters/path
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-shortcuts-output.json\*](cluster/list-shortcuts-output.json "open original schema") |
+
+## path Type
+
+`string`
diff --git a/core/list-shortcuts-output-items-parameters-source.md b/core/list-shortcuts-output-items-parameters-source.md
new file mode 100644
index 000000000..e85798aaa
--- /dev/null
+++ b/core/list-shortcuts-output-items-parameters-source.md
@@ -0,0 +1,15 @@
+# Untitled string in list-shortcuts output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-shortcuts-output.json#/items/parameters/source
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-shortcuts-output.json\*](cluster/list-shortcuts-output.json "open original schema") |
+
+## source Type
+
+`string`
diff --git a/core/list-shortcuts-output-items-parameters-tags-items.md b/core/list-shortcuts-output-items-parameters-tags-items.md
new file mode 100644
index 000000000..ac30bb0a7
--- /dev/null
+++ b/core/list-shortcuts-output-items-parameters-tags-items.md
@@ -0,0 +1,15 @@
+# Untitled string in list-shortcuts output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-shortcuts-output.json#/items/parameters/tags/items
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-shortcuts-output.json\*](cluster/list-shortcuts-output.json "open original schema") |
+
+## items Type
+
+`string`
diff --git a/core/list-shortcuts-output-items-parameters-tags.md b/core/list-shortcuts-output-items-parameters-tags.md
new file mode 100644
index 000000000..ea28ef1be
--- /dev/null
+++ b/core/list-shortcuts-output-items-parameters-tags.md
@@ -0,0 +1,15 @@
+# Untitled array in list-shortcuts output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-shortcuts-output.json#/items/parameters/tags
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-shortcuts-output.json\*](cluster/list-shortcuts-output.json "open original schema") |
+
+## tags Type
+
+`string[]`
diff --git a/core/list-shortcuts-output-items-parameters.md b/core/list-shortcuts-output-items-parameters.md
new file mode 100644
index 000000000..32e1aea25
--- /dev/null
+++ b/core/list-shortcuts-output-items-parameters.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in list-shortcuts output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-shortcuts-output.json#/items/parameters
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-shortcuts-output.json\*](cluster/list-shortcuts-output.json "open original schema") |
+
+## parameters Type
+
+unknown
diff --git a/core/list-shortcuts-output-items.md b/core/list-shortcuts-output-items.md
new file mode 100644
index 000000000..28dfd18a3
--- /dev/null
+++ b/core/list-shortcuts-output-items.md
@@ -0,0 +1,15 @@
+# Untitled object in list-shortcuts output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-shortcuts-output.json#/items
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-shortcuts-output.json\*](cluster/list-shortcuts-output.json "open original schema") |
+
+## items Type
+
+`object` ([Details](list-shortcuts-output-items.md))
diff --git a/core/list-shortcuts-output.json b/core/list-shortcuts-output.json
new file mode 100644
index 000000000..35eaf15fb
--- /dev/null
+++ b/core/list-shortcuts-output.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"list-shortcuts output","$id":"http://schema.nethserver.org/cluster/list-shortcuts-output.json","description":"Output schema of the list-shortcuts action","examples":[[{"name":{"en":"Audit logs","it":"Log di audit"},"description":{"en":"Show audit logs","it":"Visualizza log di audit"},"tags":{"en":["audit","logs","log","operation"],"it":["audit","logs","log","operazioni"]},"path":"/logs","source":"core"},{"name":{"en":"Change wiki URL","it":"Cambia URL wiki"},"description":{"en":"Change the host name associated to the wiki","it":"Cambia il nome host associato al wiki"},"tags":{"en":["wiki","dokuwiki","host","url"],"it":["wiki","dokuwiki","host","url"]},"path":"apps/dokuwiki1/edit","source":"dokuwiki1"}]],"type":"array","items":{"type":"object","parameters":{"name":{"description":"","type":"string"},"description":{"description":"","type":"string"},"source":{"description":"","type":"string"},"path":{"description":"","type":"string"},"tags":{"description":"","type":"array","items":{"type":"string"}}}}}
diff --git a/core/list-shortcuts-output.md b/core/list-shortcuts-output.md
new file mode 100644
index 000000000..b48a0c881
--- /dev/null
+++ b/core/list-shortcuts-output.md
@@ -0,0 +1,74 @@
+# list-shortcuts output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-shortcuts-output.json
+```
+
+Output schema of the list-shortcuts action
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-shortcuts-output.json](cluster/list-shortcuts-output.json "open original schema") |
+
+## list-shortcuts output Type
+
+`object[]` ([Details](list-shortcuts-output-items.md))
+
+## list-shortcuts output Examples
+
+```json
+[
+ {
+ "name": {
+ "en": "Audit logs",
+ "it": "Log di audit"
+ },
+ "description": {
+ "en": "Show audit logs",
+ "it": "Visualizza log di audit"
+ },
+ "tags": {
+ "en": [
+ "audit",
+ "logs",
+ "log",
+ "operation"
+ ],
+ "it": [
+ "audit",
+ "logs",
+ "log",
+ "operazioni"
+ ]
+ },
+ "path": "/logs",
+ "source": "core"
+ },
+ {
+ "name": {
+ "en": "Change wiki URL",
+ "it": "Cambia URL wiki"
+ },
+ "description": {
+ "en": "Change the host name associated to the wiki",
+ "it": "Cambia il nome host associato al wiki"
+ },
+ "tags": {
+ "en": [
+ "wiki",
+ "dokuwiki",
+ "host",
+ "url"
+ ],
+ "it": [
+ "wiki",
+ "dokuwiki",
+ "host",
+ "url"
+ ]
+ },
+ "path": "apps/dokuwiki1/edit",
+ "source": "dokuwiki1"
+ }
+]
+```
diff --git a/core/list-updates-input.json b/core/list-updates-input.json
new file mode 100644
index 000000000..0345c9af8
--- /dev/null
+++ b/core/list-updates-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"list-updates input","$id":"http://schema.nethserver.org/cluster/list-updates-input.json","description":"The action does not accept any input","examples":[null],"type":"null"}
diff --git a/core/list-updates-input.md b/core/list-updates-input.md
new file mode 100644
index 000000000..601737102
--- /dev/null
+++ b/core/list-updates-input.md
@@ -0,0 +1,21 @@
+# list-updates input Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-updates-input.json
+```
+
+The action does not accept any input
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-updates-input.json](cluster/list-updates-input.json "open original schema") |
+
+## list-updates input Type
+
+`null`, the value must be null ([list-updates input](list-updates-input.md))
+
+## list-updates input Examples
+
+```json
+null
+```
diff --git a/core/list-updates-output-items-properties-digest.md b/core/list-updates-output-items-properties-digest.md
new file mode 100644
index 000000000..aa6cc29b3
--- /dev/null
+++ b/core/list-updates-output-items-properties-digest.md
@@ -0,0 +1,15 @@
+# Untitled string in list-updates output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-updates-output.json#/items/properties/digest
+```
+
+Image digest
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-updates-output.json\*](cluster/list-updates-output.json "open original schema") |
+
+## digest Type
+
+`string`
diff --git a/core/list-updates-output-items-properties-id.md b/core/list-updates-output-items-properties-id.md
new file mode 100644
index 000000000..822886a68
--- /dev/null
+++ b/core/list-updates-output-items-properties-id.md
@@ -0,0 +1,15 @@
+# Untitled string in list-updates output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-updates-output.json#/items/properties/id
+```
+
+Unique name of a module instance
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-updates-output.json\*](cluster/list-updates-output.json "open original schema") |
+
+## id Type
+
+`string`
diff --git a/core/list-updates-output-items-properties-node.md b/core/list-updates-output-items-properties-node.md
new file mode 100644
index 000000000..0905bb514
--- /dev/null
+++ b/core/list-updates-output-items-properties-node.md
@@ -0,0 +1,15 @@
+# Untitled string in list-updates output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-updates-output.json#/items/properties/node
+```
+
+Id of the node where the instance is running
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-updates-output.json\*](cluster/list-updates-output.json "open original schema") |
+
+## node Type
+
+`string`
diff --git a/core/list-updates-output-items-properties-source.md b/core/list-updates-output-items-properties-source.md
new file mode 100644
index 000000000..e4f7ddf75
--- /dev/null
+++ b/core/list-updates-output-items-properties-source.md
@@ -0,0 +1,15 @@
+# Untitled string in list-updates output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-updates-output.json#/items/properties/source
+```
+
+The URL of the container image registry
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-updates-output.json\*](cluster/list-updates-output.json "open original schema") |
+
+## source Type
+
+`string`
diff --git a/core/list-updates-output-items-properties-update.md b/core/list-updates-output-items-properties-update.md
new file mode 100644
index 000000000..4d3ab371d
--- /dev/null
+++ b/core/list-updates-output-items-properties-update.md
@@ -0,0 +1,15 @@
+# Untitled string in list-updates output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-updates-output.json#/items/properties/update
+```
+
+A valid semantic version extracted from image tag wich should be greater than 'version' field
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-updates-output.json\*](cluster/list-updates-output.json "open original schema") |
+
+## update Type
+
+`string`
diff --git a/core/list-updates-output-items-properties-version.md b/core/list-updates-output-items-properties-version.md
new file mode 100644
index 000000000..132a6aa9b
--- /dev/null
+++ b/core/list-updates-output-items-properties-version.md
@@ -0,0 +1,15 @@
+# Untitled string in list-updates output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-updates-output.json#/items/properties/version
+```
+
+A valid semantic version extracted from image tag
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-updates-output.json\*](cluster/list-updates-output.json "open original schema") |
+
+## version Type
+
+`string`
diff --git a/core/list-updates-output-items.md b/core/list-updates-output-items.md
new file mode 100644
index 000000000..0ae527b4e
--- /dev/null
+++ b/core/list-updates-output-items.md
@@ -0,0 +1,134 @@
+# Untitled object in list-updates output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-updates-output.json#/items
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [list-updates-output.json\*](cluster/list-updates-output.json "open original schema") |
+
+## items Type
+
+`object` ([Details](list-updates-output-items.md))
+
+# items Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------ | :------- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [id](#id) | `string` | Required | cannot be null | [list-updates output](list-updates-output-items-properties-id.md "http://schema.nethserver.org/cluster/list-updates-output.json#/items/properties/id") |
+| [node](#node) | `string` | Required | cannot be null | [list-updates output](list-updates-output-items-properties-node.md "http://schema.nethserver.org/cluster/list-updates-output.json#/items/properties/node") |
+| [digest](#digest) | `string` | Required | cannot be null | [list-updates output](list-updates-output-items-properties-digest.md "http://schema.nethserver.org/cluster/list-updates-output.json#/items/properties/digest") |
+| [source](#source) | `string` | Required | cannot be null | [list-updates output](list-updates-output-items-properties-source.md "http://schema.nethserver.org/cluster/list-updates-output.json#/items/properties/source") |
+| [version](#version) | `string` | Required | cannot be null | [list-updates output](list-updates-output-items-properties-version.md "http://schema.nethserver.org/cluster/list-updates-output.json#/items/properties/version") |
+| [update](#update) | `string` | Required | cannot be null | [list-updates output](list-updates-output-items-properties-update.md "http://schema.nethserver.org/cluster/list-updates-output.json#/items/properties/update") |
+
+## id
+
+Unique name of a module instance
+
+`id`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-updates output](list-updates-output-items-properties-id.md "http://schema.nethserver.org/cluster/list-updates-output.json#/items/properties/id")
+
+### id Type
+
+`string`
+
+## node
+
+Id of the node where the instance is running
+
+`node`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-updates output](list-updates-output-items-properties-node.md "http://schema.nethserver.org/cluster/list-updates-output.json#/items/properties/node")
+
+### node Type
+
+`string`
+
+## digest
+
+Image digest
+
+`digest`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-updates output](list-updates-output-items-properties-digest.md "http://schema.nethserver.org/cluster/list-updates-output.json#/items/properties/digest")
+
+### digest Type
+
+`string`
+
+## source
+
+The URL of the container image registry
+
+`source`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-updates output](list-updates-output-items-properties-source.md "http://schema.nethserver.org/cluster/list-updates-output.json#/items/properties/source")
+
+### source Type
+
+`string`
+
+## version
+
+A valid semantic version extracted from image tag
+
+`version`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-updates output](list-updates-output-items-properties-version.md "http://schema.nethserver.org/cluster/list-updates-output.json#/items/properties/version")
+
+### version Type
+
+`string`
+
+## update
+
+A valid semantic version extracted from image tag wich should be greater than 'version' field
+
+`update`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-updates output](list-updates-output-items-properties-update.md "http://schema.nethserver.org/cluster/list-updates-output.json#/items/properties/update")
+
+### update Type
+
+`string`
diff --git a/core/list-updates-output.json b/core/list-updates-output.json
new file mode 100644
index 000000000..f1752cc2f
--- /dev/null
+++ b/core/list-updates-output.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"list-updates output","description":"List updates output","$id":"http://schema.nethserver.org/cluster/list-updates-output.json","examples":[{"id":"dokuwiki1","node":"1","digest":"sha256:929465c177d9e40559b3fa838f2e429060ff7e8c3e4e1a12076b3304ad562982","source":"ghcr.io/nethserver/dokuwiki","version":"0.0.1-alpha1","update":"0.0.2"}],"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique name of a module instance"},"node":{"type":"string","description":"Id of the node where the instance is running"},"digest":{"type":"string","description":"Image digest"},"source":{"type":"string","description":"The URL of the container image registry"},"version":{"type":"string","description":"A valid semantic version extracted from image tag"},"update":{"type":"string","description":"A valid semantic version extracted from image tag wich should be greater than 'version' field"}},"required":["id","node","digest","source","version","update"]}}
diff --git a/core/list-updates-output.md b/core/list-updates-output.md
new file mode 100644
index 000000000..543d43258
--- /dev/null
+++ b/core/list-updates-output.md
@@ -0,0 +1,28 @@
+# list-updates output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-updates-output.json
+```
+
+List updates output
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-updates-output.json](cluster/list-updates-output.json "open original schema") |
+
+## list-updates output Type
+
+`object[]` ([Details](list-updates-output-items.md))
+
+## list-updates output Examples
+
+```json
+{
+ "id": "dokuwiki1",
+ "node": "1",
+ "digest": "sha256:929465c177d9e40559b3fa838f2e429060ff7e8c3e4e1a12076b3304ad562982",
+ "source": "ghcr.io/nethserver/dokuwiki",
+ "version": "0.0.1-alpha1",
+ "update": "0.0.2"
+}
+```
diff --git a/core/list-user-domains-output-defs-ldap-account-provider-properties-host-name-or-ip-address.md b/core/list-user-domains-output-defs-ldap-account-provider-properties-host-name-or-ip-address.md
new file mode 100644
index 000000000..43ebe4aca
--- /dev/null
+++ b/core/list-user-domains-output-defs-ldap-account-provider-properties-host-name-or-ip-address.md
@@ -0,0 +1,19 @@
+# Host name or IP address Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/ldap-provider/properties/host
+```
+
+Can be `null` if the provider is not configured properly
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-user-domains-output.json\*](cluster/list-user-domains-output.json "open original schema") |
+
+## host Type
+
+`string` ([Host name or IP address](list-user-domains-output-defs-ldap-account-provider-properties-host-name-or-ip-address.md))
+
+## host Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/list-user-domains-output-defs-ldap-account-provider-properties-id.md b/core/list-user-domains-output-defs-ldap-account-provider-properties-id.md
new file mode 100644
index 000000000..a4b29c7f5
--- /dev/null
+++ b/core/list-user-domains-output-defs-ldap-account-provider-properties-id.md
@@ -0,0 +1,19 @@
+# Untitled string in list-user-domains output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/ldap-provider/properties/id
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-user-domains-output.json\*](cluster/list-user-domains-output.json "open original schema") |
+
+## id Type
+
+`string`
+
+## id Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/list-user-domains-output-defs-ldap-account-provider-properties-node.md b/core/list-user-domains-output-defs-ldap-account-provider-properties-node.md
new file mode 100644
index 000000000..d5c6fb67a
--- /dev/null
+++ b/core/list-user-domains-output-defs-ldap-account-provider-properties-node.md
@@ -0,0 +1,19 @@
+# Untitled undefined type in list-user-domains output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/ldap-provider/properties/node
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-user-domains-output.json\*](cluster/list-user-domains-output.json "open original schema") |
+
+## node Type
+
+`integer`
+
+## node Constraints
+
+**minimum**: the value of this number must greater than or equal to: `1`
diff --git a/core/list-user-domains-output-defs-ldap-account-provider-properties-tcp-port-number.md b/core/list-user-domains-output-defs-ldap-account-provider-properties-tcp-port-number.md
new file mode 100644
index 000000000..0f690c8ce
--- /dev/null
+++ b/core/list-user-domains-output-defs-ldap-account-provider-properties-tcp-port-number.md
@@ -0,0 +1,19 @@
+# TCP port number Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/ldap-provider/properties/port
+```
+
+Can be `null` if the provider is not configured properly
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-user-domains-output.json\*](cluster/list-user-domains-output.json "open original schema") |
+
+## port Type
+
+`integer` ([TCP port number](list-user-domains-output-defs-ldap-account-provider-properties-tcp-port-number.md))
+
+## port Constraints
+
+**minimum**: the value of this number must greater than or equal to: `1`
diff --git a/core/list-user-domains-output-defs-ldap-account-provider-properties-the-provider-can-be-used-as-smb-file-server-too.md b/core/list-user-domains-output-defs-ldap-account-provider-properties-the-provider-can-be-used-as-smb-file-server-too.md
new file mode 100644
index 000000000..9fa577290
--- /dev/null
+++ b/core/list-user-domains-output-defs-ldap-account-provider-properties-the-provider-can-be-used-as-smb-file-server-too.md
@@ -0,0 +1,15 @@
+# The provider can be used as SMB file server too Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/ldap-provider/properties/file_server
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-user-domains-output.json\*](cluster/list-user-domains-output.json "open original schema") |
+
+## file\_server Type
+
+`boolean` ([The provider can be used as SMB file server too](list-user-domains-output-defs-ldap-account-provider-properties-the-provider-can-be-used-as-smb-file-server-too.md))
diff --git a/core/list-user-domains-output-defs-ldap-account-provider-properties-ui_name.md b/core/list-user-domains-output-defs-ldap-account-provider-properties-ui_name.md
new file mode 100644
index 000000000..c0c67abd7
--- /dev/null
+++ b/core/list-user-domains-output-defs-ldap-account-provider-properties-ui_name.md
@@ -0,0 +1,15 @@
+# Untitled string in list-user-domains output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/ldap-provider/properties/ui_name
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-user-domains-output.json\*](cluster/list-user-domains-output.json "open original schema") |
+
+## ui\_name Type
+
+`string`
diff --git a/core/list-user-domains-output-defs-ldap-account-provider.md b/core/list-user-domains-output-defs-ldap-account-provider.md
new file mode 100644
index 000000000..3ac3eb631
--- /dev/null
+++ b/core/list-user-domains-output-defs-ldap-account-provider.md
@@ -0,0 +1,150 @@
+# LDAP account provider Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/ldap-provider
+```
+
+An LDAP account provider is a database of users and groups that can also be used as an authentication backend. A user domain is composed by at least one LDAP account provider. Multiple replicas can be instantiated on different cluster nodes.
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [list-user-domains-output.json\*](cluster/list-user-domains-output.json "open original schema") |
+
+## ldap-provider Type
+
+`object` ([LDAP account provider](list-user-domains-output-defs-ldap-account-provider.md))
+
+# ldap-provider Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :--------------------------- | :-------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [id](#id) | `string` | Required | cannot be null | [list-user-domains output](list-user-domains-output-defs-ldap-account-provider-properties-id.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/ldap-provider/properties/id") |
+| [ui\_name](#ui_name) | `string` | Required | cannot be null | [list-user-domains output](list-user-domains-output-defs-ldap-account-provider-properties-ui_name.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/ldap-provider/properties/ui_name") |
+| [node](#node) | `integer` | Required | can be null | [list-user-domains output](list-user-domains-output-defs-ldap-account-provider-properties-node.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/ldap-provider/properties/node") |
+| [file\_server](#file_server) | `boolean` | Required | cannot be null | [list-user-domains output](list-user-domains-output-defs-ldap-account-provider-properties-the-provider-can-be-used-as-smb-file-server-too.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/ldap-provider/properties/file_server") |
+| [host](#host) | `string` | Required | can be null | [list-user-domains output](list-user-domains-output-defs-ldap-account-provider-properties-host-name-or-ip-address.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/ldap-provider/properties/host") |
+| [port](#port) | `integer` | Required | can be null | [list-user-domains output](list-user-domains-output-defs-ldap-account-provider-properties-tcp-port-number.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/ldap-provider/properties/port") |
+
+## id
+
+
+
+`id`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-user-domains output](list-user-domains-output-defs-ldap-account-provider-properties-id.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/ldap-provider/properties/id")
+
+### id Type
+
+`string`
+
+### id Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## ui\_name
+
+
+
+`ui_name`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-user-domains output](list-user-domains-output-defs-ldap-account-provider-properties-ui_name.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/ldap-provider/properties/ui_name")
+
+### ui\_name Type
+
+`string`
+
+## node
+
+
+
+`node`
+
+* is required
+
+* Type: `integer`
+
+* can be null
+
+* defined in: [list-user-domains output](list-user-domains-output-defs-ldap-account-provider-properties-node.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/ldap-provider/properties/node")
+
+### node Type
+
+`integer`
+
+### node Constraints
+
+**minimum**: the value of this number must greater than or equal to: `1`
+
+## file\_server
+
+
+
+`file_server`
+
+* is required
+
+* Type: `boolean` ([The provider can be used as SMB file server too](list-user-domains-output-defs-ldap-account-provider-properties-the-provider-can-be-used-as-smb-file-server-too.md))
+
+* cannot be null
+
+* defined in: [list-user-domains output](list-user-domains-output-defs-ldap-account-provider-properties-the-provider-can-be-used-as-smb-file-server-too.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/ldap-provider/properties/file_server")
+
+### file\_server Type
+
+`boolean` ([The provider can be used as SMB file server too](list-user-domains-output-defs-ldap-account-provider-properties-the-provider-can-be-used-as-smb-file-server-too.md))
+
+## host
+
+Can be `null` if the provider is not configured properly
+
+`host`
+
+* is required
+
+* Type: `string` ([Host name or IP address](list-user-domains-output-defs-ldap-account-provider-properties-host-name-or-ip-address.md))
+
+* can be null
+
+* defined in: [list-user-domains output](list-user-domains-output-defs-ldap-account-provider-properties-host-name-or-ip-address.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/ldap-provider/properties/host")
+
+### host Type
+
+`string` ([Host name or IP address](list-user-domains-output-defs-ldap-account-provider-properties-host-name-or-ip-address.md))
+
+### host Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## port
+
+Can be `null` if the provider is not configured properly
+
+`port`
+
+* is required
+
+* Type: `integer` ([TCP port number](list-user-domains-output-defs-ldap-account-provider-properties-tcp-port-number.md))
+
+* can be null
+
+* defined in: [list-user-domains output](list-user-domains-output-defs-ldap-account-provider-properties-tcp-port-number.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/ldap-provider/properties/port")
+
+### port Type
+
+`integer` ([TCP port number](list-user-domains-output-defs-ldap-account-provider-properties-tcp-port-number.md))
+
+### port Constraints
+
+**minimum**: the value of this number must greater than or equal to: `1`
diff --git a/core/list-user-domains-output-defs-ldap-domain-properties-properties-base_dn.md b/core/list-user-domains-output-defs-ldap-domain-properties-properties-base_dn.md
new file mode 100644
index 000000000..6d7bee117
--- /dev/null
+++ b/core/list-user-domains-output-defs-ldap-domain-properties-properties-base_dn.md
@@ -0,0 +1,19 @@
+# Untitled string in list-user-domains output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/additional-properties-of-ldap/properties/base_dn
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-user-domains-output.json\*](cluster/list-user-domains-output.json "open original schema") |
+
+## base\_dn Type
+
+`string`
+
+## base\_dn Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/list-user-domains-output-defs-ldap-domain-properties-properties-bind_dn.md b/core/list-user-domains-output-defs-ldap-domain-properties-properties-bind_dn.md
new file mode 100644
index 000000000..04af826f3
--- /dev/null
+++ b/core/list-user-domains-output-defs-ldap-domain-properties-properties-bind_dn.md
@@ -0,0 +1,19 @@
+# Untitled string in list-user-domains output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/additional-properties-of-ldap/properties/bind_dn
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-user-domains-output.json\*](cluster/list-user-domains-output.json "open original schema") |
+
+## bind\_dn Type
+
+`string`
+
+## bind\_dn Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/list-user-domains-output-defs-ldap-domain-properties-properties-bind_password.md b/core/list-user-domains-output-defs-ldap-domain-properties-properties-bind_password.md
new file mode 100644
index 000000000..ae652b66f
--- /dev/null
+++ b/core/list-user-domains-output-defs-ldap-domain-properties-properties-bind_password.md
@@ -0,0 +1,19 @@
+# Untitled string in list-user-domains output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/additional-properties-of-ldap/properties/bind_password
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-user-domains-output.json\*](cluster/list-user-domains-output.json "open original schema") |
+
+## bind\_password Type
+
+`string`
+
+## bind\_password Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/list-user-domains-output-defs-ldap-domain-properties-properties-ldap-database-schema.md b/core/list-user-domains-output-defs-ldap-domain-properties-properties-ldap-database-schema.md
new file mode 100644
index 000000000..ae124fc8e
--- /dev/null
+++ b/core/list-user-domains-output-defs-ldap-domain-properties-properties-ldap-database-schema.md
@@ -0,0 +1,24 @@
+# LDAP database schema Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/additional-properties-of-ldap/properties/schema
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-user-domains-output.json\*](cluster/list-user-domains-output.json "open original schema") |
+
+## schema Type
+
+`string` ([LDAP database schema](list-user-domains-output-defs-ldap-domain-properties-properties-ldap-database-schema.md))
+
+## schema Constraints
+
+**enum**: the value of this property must be equal to one of the following values:
+
+| Value | Explanation |
+| :---------- | :---------- |
+| `"ad"` | |
+| `"rfc2307"` | |
diff --git a/core/list-user-domains-output-defs-ldap-domain-properties-properties-tls.md b/core/list-user-domains-output-defs-ldap-domain-properties-properties-tls.md
new file mode 100644
index 000000000..4883b4795
--- /dev/null
+++ b/core/list-user-domains-output-defs-ldap-domain-properties-properties-tls.md
@@ -0,0 +1,15 @@
+# Untitled boolean in list-user-domains output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/additional-properties-of-ldap/properties/tls
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-user-domains-output.json\*](cluster/list-user-domains-output.json "open original schema") |
+
+## tls Type
+
+`boolean`
diff --git a/core/list-user-domains-output-defs-ldap-domain-properties-properties-tls_verify.md b/core/list-user-domains-output-defs-ldap-domain-properties-properties-tls_verify.md
new file mode 100644
index 000000000..b717e163b
--- /dev/null
+++ b/core/list-user-domains-output-defs-ldap-domain-properties-properties-tls_verify.md
@@ -0,0 +1,15 @@
+# Untitled boolean in list-user-domains output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/additional-properties-of-ldap/properties/tls_verify
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-user-domains-output.json\*](cluster/list-user-domains-output.json "open original schema") |
+
+## tls\_verify Type
+
+`boolean`
diff --git a/core/list-user-domains-output-defs-ldap-domain-properties.md b/core/list-user-domains-output-defs-ldap-domain-properties.md
new file mode 100644
index 000000000..4c176dfcf
--- /dev/null
+++ b/core/list-user-domains-output-defs-ldap-domain-properties.md
@@ -0,0 +1,155 @@
+# LDAP domain properties Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/additional-properties-of-ldap
+```
+
+Additional required properties of LDAP-based domains
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [list-user-domains-output.json\*](cluster/list-user-domains-output.json "open original schema") |
+
+## additional-properties-of-ldap Type
+
+`object` ([LDAP domain properties](list-user-domains-output-defs-ldap-domain-properties.md))
+
+# additional-properties-of-ldap Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------------- | :-------- | :------- | :------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [schema](#schema) | `string` | Required | cannot be null | [list-user-domains output](list-user-domains-output-defs-ldap-domain-properties-properties-ldap-database-schema.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/additional-properties-of-ldap/properties/schema") |
+| [base\_dn](#base_dn) | `string` | Required | cannot be null | [list-user-domains output](list-user-domains-output-defs-ldap-domain-properties-properties-base_dn.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/additional-properties-of-ldap/properties/base_dn") |
+| [bind\_dn](#bind_dn) | `string` | Required | cannot be null | [list-user-domains output](list-user-domains-output-defs-ldap-domain-properties-properties-bind_dn.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/additional-properties-of-ldap/properties/bind_dn") |
+| [bind\_password](#bind_password) | `string` | Required | cannot be null | [list-user-domains output](list-user-domains-output-defs-ldap-domain-properties-properties-bind_password.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/additional-properties-of-ldap/properties/bind_password") |
+| [tls](#tls) | `boolean` | Required | cannot be null | [list-user-domains output](list-user-domains-output-defs-ldap-domain-properties-properties-tls.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/additional-properties-of-ldap/properties/tls") |
+| [tls\_verify](#tls_verify) | `boolean` | Required | cannot be null | [list-user-domains output](list-user-domains-output-defs-ldap-domain-properties-properties-tls_verify.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/additional-properties-of-ldap/properties/tls_verify") |
+
+## schema
+
+
+
+`schema`
+
+* is required
+
+* Type: `string` ([LDAP database schema](list-user-domains-output-defs-ldap-domain-properties-properties-ldap-database-schema.md))
+
+* cannot be null
+
+* defined in: [list-user-domains output](list-user-domains-output-defs-ldap-domain-properties-properties-ldap-database-schema.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/additional-properties-of-ldap/properties/schema")
+
+### schema Type
+
+`string` ([LDAP database schema](list-user-domains-output-defs-ldap-domain-properties-properties-ldap-database-schema.md))
+
+### schema Constraints
+
+**enum**: the value of this property must be equal to one of the following values:
+
+| Value | Explanation |
+| :---------- | :---------- |
+| `"ad"` | |
+| `"rfc2307"` | |
+
+## base\_dn
+
+
+
+`base_dn`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-user-domains output](list-user-domains-output-defs-ldap-domain-properties-properties-base_dn.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/additional-properties-of-ldap/properties/base_dn")
+
+### base\_dn Type
+
+`string`
+
+### base\_dn Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## bind\_dn
+
+
+
+`bind_dn`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-user-domains output](list-user-domains-output-defs-ldap-domain-properties-properties-bind_dn.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/additional-properties-of-ldap/properties/bind_dn")
+
+### bind\_dn Type
+
+`string`
+
+### bind\_dn Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## bind\_password
+
+
+
+`bind_password`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-user-domains output](list-user-domains-output-defs-ldap-domain-properties-properties-bind_password.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/additional-properties-of-ldap/properties/bind_password")
+
+### bind\_password Type
+
+`string`
+
+### bind\_password Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## tls
+
+
+
+`tls`
+
+* is required
+
+* Type: `boolean`
+
+* cannot be null
+
+* defined in: [list-user-domains output](list-user-domains-output-defs-ldap-domain-properties-properties-tls.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/additional-properties-of-ldap/properties/tls")
+
+### tls Type
+
+`boolean`
+
+## tls\_verify
+
+
+
+`tls_verify`
+
+* is required
+
+* Type: `boolean`
+
+* cannot be null
+
+* defined in: [list-user-domains output](list-user-domains-output-defs-ldap-domain-properties-properties-tls_verify.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/additional-properties-of-ldap/properties/tls_verify")
+
+### tls\_verify Type
+
+`boolean`
diff --git a/core/list-user-domains-output-defs-unconfigured-domain-properties-domain-hosting-location.md b/core/list-user-domains-output-defs-unconfigured-domain-properties-domain-hosting-location.md
new file mode 100644
index 000000000..5b312daa8
--- /dev/null
+++ b/core/list-user-domains-output-defs-unconfigured-domain-properties-domain-hosting-location.md
@@ -0,0 +1,24 @@
+# Domain hosting location Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/unconfigured-domain/properties/location
+```
+
+Type of domain hosting. Set to `internal` if the domain is hosted by the cluster, `external` if the domain is provided by a remote service
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-user-domains-output.json\*](cluster/list-user-domains-output.json "open original schema") |
+
+## location Type
+
+`string` ([Domain hosting location](list-user-domains-output-defs-unconfigured-domain-properties-domain-hosting-location.md))
+
+## location Constraints
+
+**enum**: the value of this property must be equal to one of the following values:
+
+| Value | Explanation |
+| :----------- | :---------- |
+| `"internal"` | |
+| `"external"` | |
diff --git a/core/list-user-domains-output-defs-unconfigured-domain-properties-ldap-database-schema.md b/core/list-user-domains-output-defs-unconfigured-domain-properties-ldap-database-schema.md
new file mode 100644
index 000000000..2141223a3
--- /dev/null
+++ b/core/list-user-domains-output-defs-unconfigured-domain-properties-ldap-database-schema.md
@@ -0,0 +1,24 @@
+# LDAP database schema Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/unconfigured-domain/properties/schema
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-user-domains-output.json\*](cluster/list-user-domains-output.json "open original schema") |
+
+## schema Type
+
+`string` ([LDAP database schema](list-user-domains-output-defs-unconfigured-domain-properties-ldap-database-schema.md))
+
+## schema Constraints
+
+**enum**: the value of this property must be equal to one of the following values:
+
+| Value | Explanation |
+| :---------- | :---------- |
+| `"ad"` | |
+| `"rfc2307"` | |
diff --git a/core/list-user-domains-output-defs-unconfigured-domain-properties-module-identifier.md b/core/list-user-domains-output-defs-unconfigured-domain-properties-module-identifier.md
new file mode 100644
index 000000000..97cc0c4da
--- /dev/null
+++ b/core/list-user-domains-output-defs-unconfigured-domain-properties-module-identifier.md
@@ -0,0 +1,15 @@
+# Module identifier Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/unconfigured-domain/properties/module_id
+```
+
+e.g. `samba1`
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-user-domains-output.json\*](cluster/list-user-domains-output.json "open original schema") |
+
+## module\_id Type
+
+`string` ([Module identifier](list-user-domains-output-defs-unconfigured-domain-properties-module-identifier.md))
diff --git a/core/list-user-domains-output-defs-unconfigured-domain-properties-node-identifier.md b/core/list-user-domains-output-defs-unconfigured-domain-properties-node-identifier.md
new file mode 100644
index 000000000..1e1d11158
--- /dev/null
+++ b/core/list-user-domains-output-defs-unconfigured-domain-properties-node-identifier.md
@@ -0,0 +1,19 @@
+# Node identifier Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/unconfigured-domain/properties/node
+```
+
+The node number, e.g. `1`
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-user-domains-output.json\*](cluster/list-user-domains-output.json "open original schema") |
+
+## node Type
+
+`integer` ([Node identifier](list-user-domains-output-defs-unconfigured-domain-properties-node-identifier.md))
+
+## node Constraints
+
+**minimum**: the value of this number must greater than or equal to: `1`
diff --git a/core/list-user-domains-output-defs-unconfigured-domain-properties-provider-protocol.md b/core/list-user-domains-output-defs-unconfigured-domain-properties-provider-protocol.md
new file mode 100644
index 000000000..de254034f
--- /dev/null
+++ b/core/list-user-domains-output-defs-unconfigured-domain-properties-provider-protocol.md
@@ -0,0 +1,23 @@
+# Provider protocol Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/unconfigured-domain/properties/protocol
+```
+
+Protocol used to communicate with the domain providers.
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-user-domains-output.json\*](cluster/list-user-domains-output.json "open original schema") |
+
+## protocol Type
+
+`string` ([Provider protocol](list-user-domains-output-defs-unconfigured-domain-properties-provider-protocol.md))
+
+## protocol Constraints
+
+**enum**: the value of this property must be equal to one of the following values:
+
+| Value | Explanation |
+| :------- | :---------- |
+| `"ldap"` | |
diff --git a/core/list-user-domains-output-defs-unconfigured-domain.md b/core/list-user-domains-output-defs-unconfigured-domain.md
new file mode 100644
index 000000000..406cec3f1
--- /dev/null
+++ b/core/list-user-domains-output-defs-unconfigured-domain.md
@@ -0,0 +1,145 @@
+# Unconfigured domain Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/unconfigured-domain
+```
+
+An account provider instance, installed as the first instance of a new domain
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [list-user-domains-output.json\*](cluster/list-user-domains-output.json "open original schema") |
+
+## unconfigured-domain Type
+
+`object` ([Unconfigured domain](list-user-domains-output-defs-unconfigured-domain.md))
+
+# unconfigured-domain Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :----------------------- | :-------- | :------- | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [module\_id](#module_id) | `string` | Required | cannot be null | [list-user-domains output](list-user-domains-output-defs-unconfigured-domain-properties-module-identifier.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/unconfigured-domain/properties/module_id") |
+| [node](#node) | `integer` | Required | can be null | [list-user-domains output](list-user-domains-output-defs-unconfigured-domain-properties-node-identifier.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/unconfigured-domain/properties/node") |
+| [location](#location) | `string` | Required | cannot be null | [list-user-domains output](list-user-domains-output-defs-unconfigured-domain-properties-domain-hosting-location.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/unconfigured-domain/properties/location") |
+| [protocol](#protocol) | `string` | Required | cannot be null | [list-user-domains output](list-user-domains-output-defs-unconfigured-domain-properties-provider-protocol.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/unconfigured-domain/properties/protocol") |
+| [schema](#schema) | `string` | Required | cannot be null | [list-user-domains output](list-user-domains-output-defs-unconfigured-domain-properties-ldap-database-schema.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/unconfigured-domain/properties/schema") |
+
+## module\_id
+
+e.g. `samba1`
+
+`module_id`
+
+* is required
+
+* Type: `string` ([Module identifier](list-user-domains-output-defs-unconfigured-domain-properties-module-identifier.md))
+
+* cannot be null
+
+* defined in: [list-user-domains output](list-user-domains-output-defs-unconfigured-domain-properties-module-identifier.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/unconfigured-domain/properties/module_id")
+
+### module\_id Type
+
+`string` ([Module identifier](list-user-domains-output-defs-unconfigured-domain-properties-module-identifier.md))
+
+## node
+
+The node number, e.g. `1`
+
+`node`
+
+* is required
+
+* Type: `integer` ([Node identifier](list-user-domains-output-defs-unconfigured-domain-properties-node-identifier.md))
+
+* can be null
+
+* defined in: [list-user-domains output](list-user-domains-output-defs-unconfigured-domain-properties-node-identifier.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/unconfigured-domain/properties/node")
+
+### node Type
+
+`integer` ([Node identifier](list-user-domains-output-defs-unconfigured-domain-properties-node-identifier.md))
+
+### node Constraints
+
+**minimum**: the value of this number must greater than or equal to: `1`
+
+## location
+
+Type of domain hosting. Set to `internal` if the domain is hosted by the cluster, `external` if the domain is provided by a remote service
+
+`location`
+
+* is required
+
+* Type: `string` ([Domain hosting location](list-user-domains-output-defs-unconfigured-domain-properties-domain-hosting-location.md))
+
+* cannot be null
+
+* defined in: [list-user-domains output](list-user-domains-output-defs-unconfigured-domain-properties-domain-hosting-location.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/unconfigured-domain/properties/location")
+
+### location Type
+
+`string` ([Domain hosting location](list-user-domains-output-defs-unconfigured-domain-properties-domain-hosting-location.md))
+
+### location Constraints
+
+**enum**: the value of this property must be equal to one of the following values:
+
+| Value | Explanation |
+| :----------- | :---------- |
+| `"internal"` | |
+| `"external"` | |
+
+## protocol
+
+Protocol used to communicate with the domain providers.
+
+`protocol`
+
+* is required
+
+* Type: `string` ([Provider protocol](list-user-domains-output-defs-unconfigured-domain-properties-provider-protocol.md))
+
+* cannot be null
+
+* defined in: [list-user-domains output](list-user-domains-output-defs-unconfigured-domain-properties-provider-protocol.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/unconfigured-domain/properties/protocol")
+
+### protocol Type
+
+`string` ([Provider protocol](list-user-domains-output-defs-unconfigured-domain-properties-provider-protocol.md))
+
+### protocol Constraints
+
+**enum**: the value of this property must be equal to one of the following values:
+
+| Value | Explanation |
+| :------- | :---------- |
+| `"ldap"` | |
+
+## schema
+
+
+
+`schema`
+
+* is required
+
+* Type: `string` ([LDAP database schema](list-user-domains-output-defs-unconfigured-domain-properties-ldap-database-schema.md))
+
+* cannot be null
+
+* defined in: [list-user-domains output](list-user-domains-output-defs-unconfigured-domain-properties-ldap-database-schema.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/unconfigured-domain/properties/schema")
+
+### schema Type
+
+`string` ([LDAP database schema](list-user-domains-output-defs-unconfigured-domain-properties-ldap-database-schema.md))
+
+### schema Constraints
+
+**enum**: the value of this property must be equal to one of the following values:
+
+| Value | Explanation |
+| :---------- | :---------- |
+| `"ad"` | |
+| `"rfc2307"` | |
diff --git a/core/list-user-domains-output-defs-user-domain-anyof-0-protocol-property-is-ldap-properties-protocol.md b/core/list-user-domains-output-defs-user-domain-anyof-0-protocol-property-is-ldap-properties-protocol.md
new file mode 100644
index 000000000..0fbc7f610
--- /dev/null
+++ b/core/list-user-domains-output-defs-user-domain-anyof-0-protocol-property-is-ldap-properties-protocol.md
@@ -0,0 +1,23 @@
+# Untitled string in list-user-domains output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/anyOf/0/not/properties/protocol
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-user-domains-output.json\*](cluster/list-user-domains-output.json "open original schema") |
+
+## protocol Type
+
+`string`
+
+## protocol Constraints
+
+**constant**: the value of this property must be equal to:
+
+```json
+"ldap"
+```
diff --git a/core/list-user-domains-output-defs-user-domain-anyof-0-protocol-property-is-ldap.md b/core/list-user-domains-output-defs-user-domain-anyof-0-protocol-property-is-ldap.md
new file mode 100644
index 000000000..41795285c
--- /dev/null
+++ b/core/list-user-domains-output-defs-user-domain-anyof-0-protocol-property-is-ldap.md
@@ -0,0 +1,47 @@
+# Protocol property is ldap Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/anyOf/0/not
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [list-user-domains-output.json\*](cluster/list-user-domains-output.json "open original schema") |
+
+## not Type
+
+`object` ([Protocol property is ldap](list-user-domains-output-defs-user-domain-anyof-0-protocol-property-is-ldap.md))
+
+# not Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :-------------------- | :------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [protocol](#protocol) | `string` | Optional | cannot be null | [list-user-domains output](list-user-domains-output-defs-user-domain-anyof-0-protocol-property-is-ldap-properties-protocol.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/anyOf/0/not/properties/protocol") |
+
+## protocol
+
+
+
+`protocol`
+
+* is optional
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-user-domains output](list-user-domains-output-defs-user-domain-anyof-0-protocol-property-is-ldap-properties-protocol.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/anyOf/0/not/properties/protocol")
+
+### protocol Type
+
+`string`
+
+### protocol Constraints
+
+**constant**: the value of this property must be equal to:
+
+```json
+"ldap"
+```
diff --git a/core/list-user-domains-output-defs-user-domain-anyof-0.md b/core/list-user-domains-output-defs-user-domain-anyof-0.md
new file mode 100644
index 000000000..a472512bf
--- /dev/null
+++ b/core/list-user-domains-output-defs-user-domain-anyof-0.md
@@ -0,0 +1,19 @@
+# Untitled undefined type in list-user-domains output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/anyOf/0
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-user-domains-output.json\*](cluster/list-user-domains-output.json "open original schema") |
+
+## 0 Type
+
+merged type ([Details](list-user-domains-output-defs-user-domain-anyof-0.md))
+
+not
+
+* [Protocol property is ldap](list-user-domains-output-defs-user-domain-anyof-0-protocol-property-is-ldap.md "check type definition")
diff --git a/core/list-user-domains-output-defs-user-domain-properties-account-providers-items.md b/core/list-user-domains-output-defs-user-domain-properties-account-providers-items.md
new file mode 100644
index 000000000..510f8fdd7
--- /dev/null
+++ b/core/list-user-domains-output-defs-user-domain-properties-account-providers-items.md
@@ -0,0 +1,19 @@
+# Untitled undefined type in list-user-domains output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/properties/providers/items
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-user-domains-output.json\*](cluster/list-user-domains-output.json "open original schema") |
+
+## items Type
+
+merged type ([Details](list-user-domains-output-defs-user-domain-properties-account-providers-items.md))
+
+any of
+
+* [LDAP account provider](list-user-domains-output-defs-ldap-account-provider.md "check type definition")
diff --git a/core/list-user-domains-output-defs-user-domain-properties-account-providers.md b/core/list-user-domains-output-defs-user-domain-properties-account-providers.md
new file mode 100644
index 000000000..24842e9ae
--- /dev/null
+++ b/core/list-user-domains-output-defs-user-domain-properties-account-providers.md
@@ -0,0 +1,19 @@
+# Account providers Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/properties/providers
+```
+
+Backend system and replicas providing the services of the user domain
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-user-domains-output.json\*](cluster/list-user-domains-output.json "open original schema") |
+
+## providers Type
+
+an array of merged types ([Details](list-user-domains-output-defs-user-domain-properties-account-providers-items.md))
+
+## providers Constraints
+
+**minimum number of items**: the minimum number of items for this array is: `1`
diff --git a/core/list-user-domains-output-defs-user-domain-properties-counters-properties-group-counter.md b/core/list-user-domains-output-defs-user-domain-properties-counters-properties-group-counter.md
new file mode 100644
index 000000000..a417ade02
--- /dev/null
+++ b/core/list-user-domains-output-defs-user-domain-properties-counters-properties-group-counter.md
@@ -0,0 +1,15 @@
+# Group counter Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/properties/counters/properties/groups
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-user-domains-output.json\*](cluster/list-user-domains-output.json "open original schema") |
+
+## groups Type
+
+`integer` ([Group counter](list-user-domains-output-defs-user-domain-properties-counters-properties-group-counter.md))
diff --git a/core/list-user-domains-output-defs-user-domain-properties-counters-properties-user-counter.md b/core/list-user-domains-output-defs-user-domain-properties-counters-properties-user-counter.md
new file mode 100644
index 000000000..d7f938e88
--- /dev/null
+++ b/core/list-user-domains-output-defs-user-domain-properties-counters-properties-user-counter.md
@@ -0,0 +1,15 @@
+# User counter Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/properties/counters/properties/users
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-user-domains-output.json\*](cluster/list-user-domains-output.json "open original schema") |
+
+## users Type
+
+`integer` ([User counter](list-user-domains-output-defs-user-domain-properties-counters-properties-user-counter.md))
diff --git a/core/list-user-domains-output-defs-user-domain-properties-counters.md b/core/list-user-domains-output-defs-user-domain-properties-counters.md
new file mode 100644
index 000000000..7eb05b88d
--- /dev/null
+++ b/core/list-user-domains-output-defs-user-domain-properties-counters.md
@@ -0,0 +1,58 @@
+# Counters Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/properties/counters
+```
+
+The cached number of users and groups returned by their respective last API calls
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [list-user-domains-output.json\*](cluster/list-user-domains-output.json "open original schema") |
+
+## counters Type
+
+`object` ([Counters](list-user-domains-output-defs-user-domain-properties-counters.md))
+
+# counters Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :---------------- | :-------- | :------- | :---------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [users](#users) | `integer` | Required | can be null | [list-user-domains output](list-user-domains-output-defs-user-domain-properties-counters-properties-user-counter.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/properties/counters/properties/users") |
+| [groups](#groups) | `integer` | Required | can be null | [list-user-domains output](list-user-domains-output-defs-user-domain-properties-counters-properties-group-counter.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/properties/counters/properties/groups") |
+
+## users
+
+
+
+`users`
+
+* is required
+
+* Type: `integer` ([User counter](list-user-domains-output-defs-user-domain-properties-counters-properties-user-counter.md))
+
+* can be null
+
+* defined in: [list-user-domains output](list-user-domains-output-defs-user-domain-properties-counters-properties-user-counter.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/properties/counters/properties/users")
+
+### users Type
+
+`integer` ([User counter](list-user-domains-output-defs-user-domain-properties-counters-properties-user-counter.md))
+
+## groups
+
+
+
+`groups`
+
+* is required
+
+* Type: `integer` ([Group counter](list-user-domains-output-defs-user-domain-properties-counters-properties-group-counter.md))
+
+* can be null
+
+* defined in: [list-user-domains output](list-user-domains-output-defs-user-domain-properties-counters-properties-group-counter.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/properties/counters/properties/groups")
+
+### groups Type
+
+`integer` ([Group counter](list-user-domains-output-defs-user-domain-properties-counters-properties-group-counter.md))
diff --git a/core/list-user-domains-output-defs-user-domain-properties-domain-hosting-location.md b/core/list-user-domains-output-defs-user-domain-properties-domain-hosting-location.md
new file mode 100644
index 000000000..3f7bf6460
--- /dev/null
+++ b/core/list-user-domains-output-defs-user-domain-properties-domain-hosting-location.md
@@ -0,0 +1,24 @@
+# Domain hosting location Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/properties/location
+```
+
+Type of domain hosting. Set to `internal` if the domain is hosted by the cluster, `external` if the domain is provided by a remote service
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-user-domains-output.json\*](cluster/list-user-domains-output.json "open original schema") |
+
+## location Type
+
+`string` ([Domain hosting location](list-user-domains-output-defs-user-domain-properties-domain-hosting-location.md))
+
+## location Constraints
+
+**enum**: the value of this property must be equal to one of the following values:
+
+| Value | Explanation |
+| :----------- | :---------- |
+| `"internal"` | |
+| `"external"` | |
diff --git a/core/list-user-domains-output-defs-user-domain-properties-hidden_groups-items.md b/core/list-user-domains-output-defs-user-domain-properties-hidden_groups-items.md
new file mode 100644
index 000000000..99e7744c5
--- /dev/null
+++ b/core/list-user-domains-output-defs-user-domain-properties-hidden_groups-items.md
@@ -0,0 +1,19 @@
+# Untitled string in list-user-domains output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/properties/hidden_groups/items
+```
+
+A group name
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-user-domains-output.json\*](cluster/list-user-domains-output.json "open original schema") |
+
+## items Type
+
+`string`
+
+## items Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/list-user-domains-output-defs-user-domain-properties-hidden_groups.md b/core/list-user-domains-output-defs-user-domain-properties-hidden_groups.md
new file mode 100644
index 000000000..46c24b503
--- /dev/null
+++ b/core/list-user-domains-output-defs-user-domain-properties-hidden_groups.md
@@ -0,0 +1,15 @@
+# Untitled array in list-user-domains output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/properties/hidden_groups
+```
+
+List of groups that are not visible from UI and from applications
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-user-domains-output.json\*](cluster/list-user-domains-output.json "open original schema") |
+
+## hidden\_groups Type
+
+`string[]`
diff --git a/core/list-user-domains-output-defs-user-domain-properties-hidden_users-items.md b/core/list-user-domains-output-defs-user-domain-properties-hidden_users-items.md
new file mode 100644
index 000000000..1785c8241
--- /dev/null
+++ b/core/list-user-domains-output-defs-user-domain-properties-hidden_users-items.md
@@ -0,0 +1,19 @@
+# Untitled string in list-user-domains output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/properties/hidden_users/items
+```
+
+A user name
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-user-domains-output.json\*](cluster/list-user-domains-output.json "open original schema") |
+
+## items Type
+
+`string`
+
+## items Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/list-user-domains-output-defs-user-domain-properties-hidden_users.md b/core/list-user-domains-output-defs-user-domain-properties-hidden_users.md
new file mode 100644
index 000000000..c9339229e
--- /dev/null
+++ b/core/list-user-domains-output-defs-user-domain-properties-hidden_users.md
@@ -0,0 +1,15 @@
+# Untitled array in list-user-domains output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/properties/hidden_users
+```
+
+List of users that are not visible from UI and from applications
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-user-domains-output.json\*](cluster/list-user-domains-output.json "open original schema") |
+
+## hidden\_users Type
+
+`string[]`
diff --git a/core/list-user-domains-output-defs-user-domain-properties-name.md b/core/list-user-domains-output-defs-user-domain-properties-name.md
new file mode 100644
index 000000000..32d63ee2e
--- /dev/null
+++ b/core/list-user-domains-output-defs-user-domain-properties-name.md
@@ -0,0 +1,19 @@
+# Untitled string in list-user-domains output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/properties/name
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-user-domains-output.json\*](cluster/list-user-domains-output.json "open original schema") |
+
+## name Type
+
+`string`
+
+## name Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/list-user-domains-output-defs-user-domain-properties-provider-protocol.md b/core/list-user-domains-output-defs-user-domain-properties-provider-protocol.md
new file mode 100644
index 000000000..f453b8cc1
--- /dev/null
+++ b/core/list-user-domains-output-defs-user-domain-properties-provider-protocol.md
@@ -0,0 +1,23 @@
+# Provider protocol Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/properties/protocol
+```
+
+Protocol used to communicate with the domain providers.
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-user-domains-output.json\*](cluster/list-user-domains-output.json "open original schema") |
+
+## protocol Type
+
+`string` ([Provider protocol](list-user-domains-output-defs-user-domain-properties-provider-protocol.md))
+
+## protocol Constraints
+
+**enum**: the value of this property must be equal to one of the following values:
+
+| Value | Explanation |
+| :------- | :---------- |
+| `"ldap"` | |
diff --git a/core/list-user-domains-output-defs-user-domain.md b/core/list-user-domains-output-defs-user-domain.md
new file mode 100644
index 000000000..6d17620b2
--- /dev/null
+++ b/core/list-user-domains-output-defs-user-domain.md
@@ -0,0 +1,186 @@
+# User domain Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain
+```
+
+Users (and also user groups) can be uniquely identified inside a domain. An application is ususally bound to just one user domain at a time, but mulitple domains can be configured in the same cluster.
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [list-user-domains-output.json\*](cluster/list-user-domains-output.json "open original schema") |
+
+## user-domain Type
+
+`object` ([User domain](list-user-domains-output-defs-user-domain.md))
+
+any of
+
+* not
+
+ * [Protocol property is ldap](list-user-domains-output-defs-user-domain-anyof-0-protocol-property-is-ldap.md "check type definition")
+
+* [LDAP domain properties](list-user-domains-output-defs-ldap-domain-properties.md "check type definition")
+
+# user-domain Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------------- | :------- | :------- | :------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [name](#name) | `string` | Required | cannot be null | [list-user-domains output](list-user-domains-output-defs-user-domain-properties-name.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/properties/name") |
+| [location](#location) | `string` | Required | cannot be null | [list-user-domains output](list-user-domains-output-defs-user-domain-properties-domain-hosting-location.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/properties/location") |
+| [counters](#counters) | `object` | Required | cannot be null | [list-user-domains output](list-user-domains-output-defs-user-domain-properties-counters.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/properties/counters") |
+| [hidden\_users](#hidden_users) | `array` | Optional | cannot be null | [list-user-domains output](list-user-domains-output-defs-user-domain-properties-hidden_users.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/properties/hidden_users") |
+| [hidden\_groups](#hidden_groups) | `array` | Optional | cannot be null | [list-user-domains output](list-user-domains-output-defs-user-domain-properties-hidden_groups.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/properties/hidden_groups") |
+| [protocol](#protocol) | `string` | Required | cannot be null | [list-user-domains output](list-user-domains-output-defs-user-domain-properties-provider-protocol.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/properties/protocol") |
+| [providers](#providers) | `array` | Required | cannot be null | [list-user-domains output](list-user-domains-output-defs-user-domain-properties-account-providers.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/properties/providers") |
+
+## name
+
+
+
+`name`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-user-domains output](list-user-domains-output-defs-user-domain-properties-name.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/properties/name")
+
+### name Type
+
+`string`
+
+### name Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## location
+
+Type of domain hosting. Set to `internal` if the domain is hosted by the cluster, `external` if the domain is provided by a remote service
+
+`location`
+
+* is required
+
+* Type: `string` ([Domain hosting location](list-user-domains-output-defs-user-domain-properties-domain-hosting-location.md))
+
+* cannot be null
+
+* defined in: [list-user-domains output](list-user-domains-output-defs-user-domain-properties-domain-hosting-location.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/properties/location")
+
+### location Type
+
+`string` ([Domain hosting location](list-user-domains-output-defs-user-domain-properties-domain-hosting-location.md))
+
+### location Constraints
+
+**enum**: the value of this property must be equal to one of the following values:
+
+| Value | Explanation |
+| :----------- | :---------- |
+| `"internal"` | |
+| `"external"` | |
+
+## counters
+
+The cached number of users and groups returned by their respective last API calls
+
+`counters`
+
+* is required
+
+* Type: `object` ([Counters](list-user-domains-output-defs-user-domain-properties-counters.md))
+
+* cannot be null
+
+* defined in: [list-user-domains output](list-user-domains-output-defs-user-domain-properties-counters.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/properties/counters")
+
+### counters Type
+
+`object` ([Counters](list-user-domains-output-defs-user-domain-properties-counters.md))
+
+## hidden\_users
+
+List of users that are not visible from UI and from applications
+
+`hidden_users`
+
+* is optional
+
+* Type: `string[]`
+
+* cannot be null
+
+* defined in: [list-user-domains output](list-user-domains-output-defs-user-domain-properties-hidden_users.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/properties/hidden_users")
+
+### hidden\_users Type
+
+`string[]`
+
+## hidden\_groups
+
+List of groups that are not visible from UI and from applications
+
+`hidden_groups`
+
+* is optional
+
+* Type: `string[]`
+
+* cannot be null
+
+* defined in: [list-user-domains output](list-user-domains-output-defs-user-domain-properties-hidden_groups.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/properties/hidden_groups")
+
+### hidden\_groups Type
+
+`string[]`
+
+## protocol
+
+Protocol used to communicate with the domain providers.
+
+`protocol`
+
+* is required
+
+* Type: `string` ([Provider protocol](list-user-domains-output-defs-user-domain-properties-provider-protocol.md))
+
+* cannot be null
+
+* defined in: [list-user-domains output](list-user-domains-output-defs-user-domain-properties-provider-protocol.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/properties/protocol")
+
+### protocol Type
+
+`string` ([Provider protocol](list-user-domains-output-defs-user-domain-properties-provider-protocol.md))
+
+### protocol Constraints
+
+**enum**: the value of this property must be equal to one of the following values:
+
+| Value | Explanation |
+| :------- | :---------- |
+| `"ldap"` | |
+
+## providers
+
+Backend system and replicas providing the services of the user domain
+
+`providers`
+
+* is required
+
+* Type: an array of merged types ([Details](list-user-domains-output-defs-user-domain-properties-account-providers-items.md))
+
+* cannot be null
+
+* defined in: [list-user-domains output](list-user-domains-output-defs-user-domain-properties-account-providers.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/properties/providers")
+
+### providers Type
+
+an array of merged types ([Details](list-user-domains-output-defs-user-domain-properties-account-providers-items.md))
+
+### providers Constraints
+
+**minimum number of items**: the minimum number of items for this array is: `1`
diff --git a/core/list-user-domains-output-defs.md b/core/list-user-domains-output-defs.md
new file mode 100644
index 000000000..8f4c130a4
--- /dev/null
+++ b/core/list-user-domains-output-defs.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in list-user-domains output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-user-domains-output.json\*](cluster/list-user-domains-output.json "open original schema") |
+
+## $defs Type
+
+unknown
diff --git a/core/list-user-domains-output-properties-domains.md b/core/list-user-domains-output-properties-domains.md
new file mode 100644
index 000000000..fea4d11ee
--- /dev/null
+++ b/core/list-user-domains-output-properties-domains.md
@@ -0,0 +1,19 @@
+# Untitled array in list-user-domains output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-user-domains-output.json#/properties/domains
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-user-domains-output.json\*](cluster/list-user-domains-output.json "open original schema") |
+
+## domains Type
+
+`object[]` ([User domain](list-user-domains-output-defs-user-domain.md))
+
+## domains Constraints
+
+**minimum number of items**: the minimum number of items for this array is: `0`
diff --git a/core/list-user-domains-output-properties-unconfigured_domains.md b/core/list-user-domains-output-properties-unconfigured_domains.md
new file mode 100644
index 000000000..22f3b5fd4
--- /dev/null
+++ b/core/list-user-domains-output-properties-unconfigured_domains.md
@@ -0,0 +1,15 @@
+# Untitled array in list-user-domains output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-user-domains-output.json#/properties/unconfigured_domains
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-user-domains-output.json\*](cluster/list-user-domains-output.json "open original schema") |
+
+## unconfigured\_domains Type
+
+`object[]` ([Unconfigured domain](list-user-domains-output-defs-unconfigured-domain.md))
diff --git a/core/list-user-domains-output.json b/core/list-user-domains-output.json
new file mode 100644
index 000000000..e00f7a7b8
--- /dev/null
+++ b/core/list-user-domains-output.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"list-user-domains output","description":"Quickly get the user domains list and their basic configuration","$id":"http://schema.nethserver.org/cluster/list-user-domains-output.json","examples":[{"unconfigured_domains":[{"module_id":"samba1","image_name":"samba","image_url":"ghcr.io/nethserver/samba:latest"}],"domains":[{"name":"sandbox.example","location":"internal","protocol":"ldap","schema":"rfc2307","base_dn":"dc=sandbox,dc=example","bind_dn":"cn=ldapservice,dc=sandbox,dc=example","bind_password":"S3cr3t!","tls":false,"tls_verify":false,"counters":{"users":null,"groups":null},"providers":[{"id":"openldap1","ui_name":"","node":1,"file_server":false,"host":"10.110.32.2","port":20003},{"id":"openldap2","ui_name":"","node":2,"file_server":false,"host":"10.110.32.3","port":20002}]},{"name":"company.org","location":"external","protocol":"ldap","schema":"rfc2307","base_dn":"dc=company,dc=org","bind_dn":"cn=ns8cluster,dc=company,dc=org","bind_password":"OtherS3cr3t!","tls":true,"tls_verify":true,"counters":{"users":15,"groups":3},"providers":[{"id":"ldap-primary.company.org","ui_name":"Company LDAP primary","node":null,"file_server":false,"host":"ldap-master.company.org","port":636},{"id":"ldap-replica.company.org","ui_name":"Company LDAP replica","node":null,"file_server":false,"host":"ldap-replica.company.org","port":636}]}]}],"type":"object","required":["domains","unconfigured_domains"],"properties":{"unconfigured_domains":{"type":"array","items":{"$ref":"#/$defs/unconfigured-domain"}},"domains":{"type":"array","minItems":0,"items":{"$ref":"#/$defs/user-domain"}}},"$defs":{"user-domain":{"title":"User domain","description":"Users (and also user groups) can be uniquely identified inside a domain. An application is ususally bound to just one user domain at a time, but mulitple domains can be configured in the same cluster.","type":"object","required":["name","location","protocol","counters","providers"],"properties":{"name":{"type":"string","minLength":1},"location":{"type":"string","title":"Domain hosting location","description":"Type of domain hosting. Set to `internal` if the domain is hosted by the cluster, `external` if the domain is provided by a remote service","enum":["internal","external"]},"counters":{"type":"object","title":"Counters","description":"The cached number of users and groups returned by their respective last API calls","required":["users","groups"],"properties":{"users":{"type":["integer","null"],"title":"User counter"},"groups":{"type":["integer","null"],"title":"Group counter"}}},"hidden_users":{"description":"List of users that are not visible from UI and from applications","type":"array","items":{"description":"A user name","type":"string","minLength":1}},"hidden_groups":{"description":"List of groups that are not visible from UI and from applications","type":"array","items":{"description":"A group name","type":"string","minLength":1}},"protocol":{"type":"string","title":"Provider protocol","description":"Protocol used to communicate with the domain providers.","enum":["ldap"]},"providers":{"title":"Account providers","description":"Backend system and replicas providing the services of the user domain","type":"array","items":{"anyOf":[{"$ref":"#/$defs/ldap-provider"}]},"minItems":1}},"anyOf":[{"not":{"type":"object","title":"Protocol property is ldap","properties":{"protocol":{"type":"string","const":"ldap"}}}},{"$ref":"#/$defs/additional-properties-of-ldap"}]},"unconfigured-domain":{"type":"object","title":"Unconfigured domain","description":"An account provider instance, installed as the first instance of a new domain","required":["module_id","node","location","protocol","schema"],"properties":{"module_id":{"title":"Module identifier","description":"e.g. `samba1`","type":"string"},"node":{"title":"Node identifier","description":"The node number, e.g. `1`","type":["integer","null"],"minimum":1},"location":{"type":"string","title":"Domain hosting location","description":"Type of domain hosting. Set to `internal` if the domain is hosted by the cluster, `external` if the domain is provided by a remote service","enum":["internal","external"]},"protocol":{"type":"string","title":"Provider protocol","description":"Protocol used to communicate with the domain providers.","enum":["ldap"]},"schema":{"type":"string","title":"LDAP database schema","enum":["ad","rfc2307"]}}},"ldap-provider":{"type":"object","title":"LDAP account provider","description":"An LDAP account provider is a database of users and groups that can also be used as an authentication backend. A user domain is composed by at least one LDAP account provider. Multiple replicas can be instantiated on different cluster nodes.","required":["id","ui_name","node","file_server","host","port"],"properties":{"id":{"type":"string","minLength":1},"ui_name":{"type":"string"},"node":{"type":["integer","null"],"minimum":1},"file_server":{"title":"The provider can be used as SMB file server too","type":"boolean"},"host":{"title":"Host name or IP address","description":"Can be `null` if the provider is not configured properly","type":["string","null"],"minLength":1},"port":{"title":"TCP port number","description":"Can be `null` if the provider is not configured properly","type":["integer","null"],"minimum":1}}},"additional-properties-of-ldap":{"type":"object","title":"LDAP domain properties","description":"Additional required properties of LDAP-based domains","properties":{"schema":{"type":"string","title":"LDAP database schema","enum":["ad","rfc2307"]},"base_dn":{"type":"string","minLength":1},"bind_dn":{"type":"string","minLength":1},"bind_password":{"type":"string","minLength":1},"tls":{"type":"boolean"},"tls_verify":{"type":"boolean"}},"required":["schema","base_dn","bind_dn","bind_password","tls","tls_verify"]}}}
diff --git a/core/list-user-domains-output.md b/core/list-user-domains-output.md
new file mode 100644
index 000000000..1a798588f
--- /dev/null
+++ b/core/list-user-domains-output.md
@@ -0,0 +1,738 @@
+# list-user-domains output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-user-domains-output.json
+```
+
+Quickly get the user domains list and their basic configuration
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [list-user-domains-output.json](cluster/list-user-domains-output.json "open original schema") |
+
+## list-user-domains output Type
+
+`object` ([list-user-domains output](list-user-domains-output.md))
+
+## list-user-domains output Examples
+
+```json
+{
+ "unconfigured_domains": [
+ {
+ "module_id": "samba1",
+ "image_name": "samba",
+ "image_url": "ghcr.io/nethserver/samba:latest"
+ }
+ ],
+ "domains": [
+ {
+ "name": "sandbox.example",
+ "location": "internal",
+ "protocol": "ldap",
+ "schema": "rfc2307",
+ "base_dn": "dc=sandbox,dc=example",
+ "bind_dn": "cn=ldapservice,dc=sandbox,dc=example",
+ "bind_password": "S3cr3t!",
+ "tls": false,
+ "tls_verify": false,
+ "counters": {
+ "users": null,
+ "groups": null
+ },
+ "providers": [
+ {
+ "id": "openldap1",
+ "ui_name": "",
+ "node": 1,
+ "file_server": false,
+ "host": "10.110.32.2",
+ "port": 20003
+ },
+ {
+ "id": "openldap2",
+ "ui_name": "",
+ "node": 2,
+ "file_server": false,
+ "host": "10.110.32.3",
+ "port": 20002
+ }
+ ]
+ },
+ {
+ "name": "company.org",
+ "location": "external",
+ "protocol": "ldap",
+ "schema": "rfc2307",
+ "base_dn": "dc=company,dc=org",
+ "bind_dn": "cn=ns8cluster,dc=company,dc=org",
+ "bind_password": "OtherS3cr3t!",
+ "tls": true,
+ "tls_verify": true,
+ "counters": {
+ "users": 15,
+ "groups": 3
+ },
+ "providers": [
+ {
+ "id": "ldap-primary.company.org",
+ "ui_name": "Company LDAP primary",
+ "node": null,
+ "file_server": false,
+ "host": "ldap-master.company.org",
+ "port": 636
+ },
+ {
+ "id": "ldap-replica.company.org",
+ "ui_name": "Company LDAP replica",
+ "node": null,
+ "file_server": false,
+ "host": "ldap-replica.company.org",
+ "port": 636
+ }
+ ]
+ }
+ ]
+}
+```
+
+# list-user-domains output Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :--------------------------------------------- | :------ | :------- | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [unconfigured\_domains](#unconfigured_domains) | `array` | Required | cannot be null | [list-user-domains output](list-user-domains-output-properties-unconfigured_domains.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/properties/unconfigured_domains") |
+| [domains](#domains) | `array` | Required | cannot be null | [list-user-domains output](list-user-domains-output-properties-domains.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/properties/domains") |
+
+## unconfigured\_domains
+
+
+
+`unconfigured_domains`
+
+* is required
+
+* Type: `object[]` ([Unconfigured domain](list-user-domains-output-defs-unconfigured-domain.md))
+
+* cannot be null
+
+* defined in: [list-user-domains output](list-user-domains-output-properties-unconfigured_domains.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/properties/unconfigured_domains")
+
+### unconfigured\_domains Type
+
+`object[]` ([Unconfigured domain](list-user-domains-output-defs-unconfigured-domain.md))
+
+## domains
+
+
+
+`domains`
+
+* is required
+
+* Type: `object[]` ([User domain](list-user-domains-output-defs-user-domain.md))
+
+* cannot be null
+
+* defined in: [list-user-domains output](list-user-domains-output-properties-domains.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/properties/domains")
+
+### domains Type
+
+`object[]` ([User domain](list-user-domains-output-defs-user-domain.md))
+
+### domains Constraints
+
+**minimum number of items**: the minimum number of items for this array is: `0`
+
+# list-user-domains output Definitions
+
+## Definitions group user-domain
+
+Reference this group by using
+
+```json
+{"$ref":"http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain"}
+```
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------------- | :------- | :------- | :------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [name](#name) | `string` | Required | cannot be null | [list-user-domains output](list-user-domains-output-defs-user-domain-properties-name.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/properties/name") |
+| [location](#location) | `string` | Required | cannot be null | [list-user-domains output](list-user-domains-output-defs-user-domain-properties-domain-hosting-location.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/properties/location") |
+| [counters](#counters) | `object` | Required | cannot be null | [list-user-domains output](list-user-domains-output-defs-user-domain-properties-counters.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/properties/counters") |
+| [hidden\_users](#hidden_users) | `array` | Optional | cannot be null | [list-user-domains output](list-user-domains-output-defs-user-domain-properties-hidden_users.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/properties/hidden_users") |
+| [hidden\_groups](#hidden_groups) | `array` | Optional | cannot be null | [list-user-domains output](list-user-domains-output-defs-user-domain-properties-hidden_groups.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/properties/hidden_groups") |
+| [protocol](#protocol) | `string` | Required | cannot be null | [list-user-domains output](list-user-domains-output-defs-user-domain-properties-provider-protocol.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/properties/protocol") |
+| [providers](#providers) | `array` | Required | cannot be null | [list-user-domains output](list-user-domains-output-defs-user-domain-properties-account-providers.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/properties/providers") |
+
+### name
+
+
+
+`name`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-user-domains output](list-user-domains-output-defs-user-domain-properties-name.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/properties/name")
+
+#### name Type
+
+`string`
+
+#### name Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+### location
+
+Type of domain hosting. Set to `internal` if the domain is hosted by the cluster, `external` if the domain is provided by a remote service
+
+`location`
+
+* is required
+
+* Type: `string` ([Domain hosting location](list-user-domains-output-defs-user-domain-properties-domain-hosting-location.md))
+
+* cannot be null
+
+* defined in: [list-user-domains output](list-user-domains-output-defs-user-domain-properties-domain-hosting-location.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/properties/location")
+
+#### location Type
+
+`string` ([Domain hosting location](list-user-domains-output-defs-user-domain-properties-domain-hosting-location.md))
+
+#### location Constraints
+
+**enum**: the value of this property must be equal to one of the following values:
+
+| Value | Explanation |
+| :----------- | :---------- |
+| `"internal"` | |
+| `"external"` | |
+
+### counters
+
+The cached number of users and groups returned by their respective last API calls
+
+`counters`
+
+* is required
+
+* Type: `object` ([Counters](list-user-domains-output-defs-user-domain-properties-counters.md))
+
+* cannot be null
+
+* defined in: [list-user-domains output](list-user-domains-output-defs-user-domain-properties-counters.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/properties/counters")
+
+#### counters Type
+
+`object` ([Counters](list-user-domains-output-defs-user-domain-properties-counters.md))
+
+### hidden\_users
+
+List of users that are not visible from UI and from applications
+
+`hidden_users`
+
+* is optional
+
+* Type: `string[]`
+
+* cannot be null
+
+* defined in: [list-user-domains output](list-user-domains-output-defs-user-domain-properties-hidden_users.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/properties/hidden_users")
+
+#### hidden\_users Type
+
+`string[]`
+
+### hidden\_groups
+
+List of groups that are not visible from UI and from applications
+
+`hidden_groups`
+
+* is optional
+
+* Type: `string[]`
+
+* cannot be null
+
+* defined in: [list-user-domains output](list-user-domains-output-defs-user-domain-properties-hidden_groups.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/properties/hidden_groups")
+
+#### hidden\_groups Type
+
+`string[]`
+
+### protocol
+
+Protocol used to communicate with the domain providers.
+
+`protocol`
+
+* is required
+
+* Type: `string` ([Provider protocol](list-user-domains-output-defs-user-domain-properties-provider-protocol.md))
+
+* cannot be null
+
+* defined in: [list-user-domains output](list-user-domains-output-defs-user-domain-properties-provider-protocol.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/properties/protocol")
+
+#### protocol Type
+
+`string` ([Provider protocol](list-user-domains-output-defs-user-domain-properties-provider-protocol.md))
+
+#### protocol Constraints
+
+**enum**: the value of this property must be equal to one of the following values:
+
+| Value | Explanation |
+| :------- | :---------- |
+| `"ldap"` | |
+
+### providers
+
+Backend system and replicas providing the services of the user domain
+
+`providers`
+
+* is required
+
+* Type: an array of merged types ([Details](list-user-domains-output-defs-user-domain-properties-account-providers-items.md))
+
+* cannot be null
+
+* defined in: [list-user-domains output](list-user-domains-output-defs-user-domain-properties-account-providers.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/user-domain/properties/providers")
+
+#### providers Type
+
+an array of merged types ([Details](list-user-domains-output-defs-user-domain-properties-account-providers-items.md))
+
+#### providers Constraints
+
+**minimum number of items**: the minimum number of items for this array is: `1`
+
+## Definitions group unconfigured-domain
+
+Reference this group by using
+
+```json
+{"$ref":"http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/unconfigured-domain"}
+```
+
+| Property | Type | Required | Nullable | Defined by |
+| :----------------------- | :-------- | :------- | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [module\_id](#module_id) | `string` | Required | cannot be null | [list-user-domains output](list-user-domains-output-defs-unconfigured-domain-properties-module-identifier.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/unconfigured-domain/properties/module_id") |
+| [node](#node) | `integer` | Required | can be null | [list-user-domains output](list-user-domains-output-defs-unconfigured-domain-properties-node-identifier.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/unconfigured-domain/properties/node") |
+| [location](#location-1) | `string` | Required | cannot be null | [list-user-domains output](list-user-domains-output-defs-unconfigured-domain-properties-domain-hosting-location.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/unconfigured-domain/properties/location") |
+| [protocol](#protocol-1) | `string` | Required | cannot be null | [list-user-domains output](list-user-domains-output-defs-unconfigured-domain-properties-provider-protocol.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/unconfigured-domain/properties/protocol") |
+| [schema](#schema) | `string` | Required | cannot be null | [list-user-domains output](list-user-domains-output-defs-unconfigured-domain-properties-ldap-database-schema.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/unconfigured-domain/properties/schema") |
+
+### module\_id
+
+e.g. `samba1`
+
+`module_id`
+
+* is required
+
+* Type: `string` ([Module identifier](list-user-domains-output-defs-unconfigured-domain-properties-module-identifier.md))
+
+* cannot be null
+
+* defined in: [list-user-domains output](list-user-domains-output-defs-unconfigured-domain-properties-module-identifier.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/unconfigured-domain/properties/module_id")
+
+#### module\_id Type
+
+`string` ([Module identifier](list-user-domains-output-defs-unconfigured-domain-properties-module-identifier.md))
+
+### node
+
+The node number, e.g. `1`
+
+`node`
+
+* is required
+
+* Type: `integer` ([Node identifier](list-user-domains-output-defs-unconfigured-domain-properties-node-identifier.md))
+
+* can be null
+
+* defined in: [list-user-domains output](list-user-domains-output-defs-unconfigured-domain-properties-node-identifier.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/unconfigured-domain/properties/node")
+
+#### node Type
+
+`integer` ([Node identifier](list-user-domains-output-defs-unconfigured-domain-properties-node-identifier.md))
+
+#### node Constraints
+
+**minimum**: the value of this number must greater than or equal to: `1`
+
+### location
+
+Type of domain hosting. Set to `internal` if the domain is hosted by the cluster, `external` if the domain is provided by a remote service
+
+`location`
+
+* is required
+
+* Type: `string` ([Domain hosting location](list-user-domains-output-defs-unconfigured-domain-properties-domain-hosting-location.md))
+
+* cannot be null
+
+* defined in: [list-user-domains output](list-user-domains-output-defs-unconfigured-domain-properties-domain-hosting-location.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/unconfigured-domain/properties/location")
+
+#### location Type
+
+`string` ([Domain hosting location](list-user-domains-output-defs-unconfigured-domain-properties-domain-hosting-location.md))
+
+#### location Constraints
+
+**enum**: the value of this property must be equal to one of the following values:
+
+| Value | Explanation |
+| :----------- | :---------- |
+| `"internal"` | |
+| `"external"` | |
+
+### protocol
+
+Protocol used to communicate with the domain providers.
+
+`protocol`
+
+* is required
+
+* Type: `string` ([Provider protocol](list-user-domains-output-defs-unconfigured-domain-properties-provider-protocol.md))
+
+* cannot be null
+
+* defined in: [list-user-domains output](list-user-domains-output-defs-unconfigured-domain-properties-provider-protocol.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/unconfigured-domain/properties/protocol")
+
+#### protocol Type
+
+`string` ([Provider protocol](list-user-domains-output-defs-unconfigured-domain-properties-provider-protocol.md))
+
+#### protocol Constraints
+
+**enum**: the value of this property must be equal to one of the following values:
+
+| Value | Explanation |
+| :------- | :---------- |
+| `"ldap"` | |
+
+### schema
+
+
+
+`schema`
+
+* is required
+
+* Type: `string` ([LDAP database schema](list-user-domains-output-defs-unconfigured-domain-properties-ldap-database-schema.md))
+
+* cannot be null
+
+* defined in: [list-user-domains output](list-user-domains-output-defs-unconfigured-domain-properties-ldap-database-schema.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/unconfigured-domain/properties/schema")
+
+#### schema Type
+
+`string` ([LDAP database schema](list-user-domains-output-defs-unconfigured-domain-properties-ldap-database-schema.md))
+
+#### schema Constraints
+
+**enum**: the value of this property must be equal to one of the following values:
+
+| Value | Explanation |
+| :---------- | :---------- |
+| `"ad"` | |
+| `"rfc2307"` | |
+
+## Definitions group ldap-provider
+
+Reference this group by using
+
+```json
+{"$ref":"http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/ldap-provider"}
+```
+
+| Property | Type | Required | Nullable | Defined by |
+| :--------------------------- | :-------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [id](#id) | `string` | Required | cannot be null | [list-user-domains output](list-user-domains-output-defs-ldap-account-provider-properties-id.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/ldap-provider/properties/id") |
+| [ui\_name](#ui_name) | `string` | Required | cannot be null | [list-user-domains output](list-user-domains-output-defs-ldap-account-provider-properties-ui_name.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/ldap-provider/properties/ui_name") |
+| [node](#node-1) | `integer` | Required | can be null | [list-user-domains output](list-user-domains-output-defs-ldap-account-provider-properties-node.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/ldap-provider/properties/node") |
+| [file\_server](#file_server) | `boolean` | Required | cannot be null | [list-user-domains output](list-user-domains-output-defs-ldap-account-provider-properties-the-provider-can-be-used-as-smb-file-server-too.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/ldap-provider/properties/file_server") |
+| [host](#host) | `string` | Required | can be null | [list-user-domains output](list-user-domains-output-defs-ldap-account-provider-properties-host-name-or-ip-address.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/ldap-provider/properties/host") |
+| [port](#port) | `integer` | Required | can be null | [list-user-domains output](list-user-domains-output-defs-ldap-account-provider-properties-tcp-port-number.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/ldap-provider/properties/port") |
+
+### id
+
+
+
+`id`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-user-domains output](list-user-domains-output-defs-ldap-account-provider-properties-id.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/ldap-provider/properties/id")
+
+#### id Type
+
+`string`
+
+#### id Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+### ui\_name
+
+
+
+`ui_name`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-user-domains output](list-user-domains-output-defs-ldap-account-provider-properties-ui_name.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/ldap-provider/properties/ui_name")
+
+#### ui\_name Type
+
+`string`
+
+### node
+
+
+
+`node`
+
+* is required
+
+* Type: `integer`
+
+* can be null
+
+* defined in: [list-user-domains output](list-user-domains-output-defs-ldap-account-provider-properties-node.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/ldap-provider/properties/node")
+
+#### node Type
+
+`integer`
+
+#### node Constraints
+
+**minimum**: the value of this number must greater than or equal to: `1`
+
+### file\_server
+
+
+
+`file_server`
+
+* is required
+
+* Type: `boolean` ([The provider can be used as SMB file server too](list-user-domains-output-defs-ldap-account-provider-properties-the-provider-can-be-used-as-smb-file-server-too.md))
+
+* cannot be null
+
+* defined in: [list-user-domains output](list-user-domains-output-defs-ldap-account-provider-properties-the-provider-can-be-used-as-smb-file-server-too.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/ldap-provider/properties/file_server")
+
+#### file\_server Type
+
+`boolean` ([The provider can be used as SMB file server too](list-user-domains-output-defs-ldap-account-provider-properties-the-provider-can-be-used-as-smb-file-server-too.md))
+
+### host
+
+Can be `null` if the provider is not configured properly
+
+`host`
+
+* is required
+
+* Type: `string` ([Host name or IP address](list-user-domains-output-defs-ldap-account-provider-properties-host-name-or-ip-address.md))
+
+* can be null
+
+* defined in: [list-user-domains output](list-user-domains-output-defs-ldap-account-provider-properties-host-name-or-ip-address.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/ldap-provider/properties/host")
+
+#### host Type
+
+`string` ([Host name or IP address](list-user-domains-output-defs-ldap-account-provider-properties-host-name-or-ip-address.md))
+
+#### host Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+### port
+
+Can be `null` if the provider is not configured properly
+
+`port`
+
+* is required
+
+* Type: `integer` ([TCP port number](list-user-domains-output-defs-ldap-account-provider-properties-tcp-port-number.md))
+
+* can be null
+
+* defined in: [list-user-domains output](list-user-domains-output-defs-ldap-account-provider-properties-tcp-port-number.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/ldap-provider/properties/port")
+
+#### port Type
+
+`integer` ([TCP port number](list-user-domains-output-defs-ldap-account-provider-properties-tcp-port-number.md))
+
+#### port Constraints
+
+**minimum**: the value of this number must greater than or equal to: `1`
+
+## Definitions group additional-properties-of-ldap
+
+Reference this group by using
+
+```json
+{"$ref":"http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/additional-properties-of-ldap"}
+```
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------------- | :-------- | :------- | :------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [schema](#schema-1) | `string` | Required | cannot be null | [list-user-domains output](list-user-domains-output-defs-ldap-domain-properties-properties-ldap-database-schema.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/additional-properties-of-ldap/properties/schema") |
+| [base\_dn](#base_dn) | `string` | Required | cannot be null | [list-user-domains output](list-user-domains-output-defs-ldap-domain-properties-properties-base_dn.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/additional-properties-of-ldap/properties/base_dn") |
+| [bind\_dn](#bind_dn) | `string` | Required | cannot be null | [list-user-domains output](list-user-domains-output-defs-ldap-domain-properties-properties-bind_dn.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/additional-properties-of-ldap/properties/bind_dn") |
+| [bind\_password](#bind_password) | `string` | Required | cannot be null | [list-user-domains output](list-user-domains-output-defs-ldap-domain-properties-properties-bind_password.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/additional-properties-of-ldap/properties/bind_password") |
+| [tls](#tls) | `boolean` | Required | cannot be null | [list-user-domains output](list-user-domains-output-defs-ldap-domain-properties-properties-tls.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/additional-properties-of-ldap/properties/tls") |
+| [tls\_verify](#tls_verify) | `boolean` | Required | cannot be null | [list-user-domains output](list-user-domains-output-defs-ldap-domain-properties-properties-tls_verify.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/additional-properties-of-ldap/properties/tls_verify") |
+
+### schema
+
+
+
+`schema`
+
+* is required
+
+* Type: `string` ([LDAP database schema](list-user-domains-output-defs-ldap-domain-properties-properties-ldap-database-schema.md))
+
+* cannot be null
+
+* defined in: [list-user-domains output](list-user-domains-output-defs-ldap-domain-properties-properties-ldap-database-schema.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/additional-properties-of-ldap/properties/schema")
+
+#### schema Type
+
+`string` ([LDAP database schema](list-user-domains-output-defs-ldap-domain-properties-properties-ldap-database-schema.md))
+
+#### schema Constraints
+
+**enum**: the value of this property must be equal to one of the following values:
+
+| Value | Explanation |
+| :---------- | :---------- |
+| `"ad"` | |
+| `"rfc2307"` | |
+
+### base\_dn
+
+
+
+`base_dn`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-user-domains output](list-user-domains-output-defs-ldap-domain-properties-properties-base_dn.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/additional-properties-of-ldap/properties/base_dn")
+
+#### base\_dn Type
+
+`string`
+
+#### base\_dn Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+### bind\_dn
+
+
+
+`bind_dn`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-user-domains output](list-user-domains-output-defs-ldap-domain-properties-properties-bind_dn.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/additional-properties-of-ldap/properties/bind_dn")
+
+#### bind\_dn Type
+
+`string`
+
+#### bind\_dn Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+### bind\_password
+
+
+
+`bind_password`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-user-domains output](list-user-domains-output-defs-ldap-domain-properties-properties-bind_password.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/additional-properties-of-ldap/properties/bind_password")
+
+#### bind\_password Type
+
+`string`
+
+#### bind\_password Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+### tls
+
+
+
+`tls`
+
+* is required
+
+* Type: `boolean`
+
+* cannot be null
+
+* defined in: [list-user-domains output](list-user-domains-output-defs-ldap-domain-properties-properties-tls.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/additional-properties-of-ldap/properties/tls")
+
+#### tls Type
+
+`boolean`
+
+### tls\_verify
+
+
+
+`tls_verify`
+
+* is required
+
+* Type: `boolean`
+
+* cannot be null
+
+* defined in: [list-user-domains output](list-user-domains-output-defs-ldap-domain-properties-properties-tls_verify.md "http://schema.nethserver.org/cluster/list-user-domains-output.json#/$defs/additional-properties-of-ldap/properties/tls_verify")
+
+#### tls\_verify Type
+
+`boolean`
diff --git a/core/list-users-output-items-properties-display_name.md b/core/list-users-output-items-properties-display_name.md
new file mode 100644
index 000000000..ba1eb933c
--- /dev/null
+++ b/core/list-users-output-items-properties-display_name.md
@@ -0,0 +1,15 @@
+# Untitled string in list-users output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-users-output.json#/items/properties/display_name
+```
+
+Display name of the user
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-users-output.json\*](cluster/list-users-output.json "open original schema") |
+
+## display\_name Type
+
+`string`
diff --git a/core/list-users-output-items-properties-user.md b/core/list-users-output-items-properties-user.md
new file mode 100644
index 000000000..b4c9bb60c
--- /dev/null
+++ b/core/list-users-output-items-properties-user.md
@@ -0,0 +1,15 @@
+# Untitled string in list-users output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-users-output.json#/items/properties/user
+```
+
+Unique username for the user
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-users-output.json\*](cluster/list-users-output.json "open original schema") |
+
+## user Type
+
+`string`
diff --git a/core/list-users-output-items.md b/core/list-users-output-items.md
new file mode 100644
index 000000000..daad594c3
--- /dev/null
+++ b/core/list-users-output-items.md
@@ -0,0 +1,58 @@
+# Untitled object in list-users output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-users-output.json#/items
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [list-users-output.json\*](cluster/list-users-output.json "open original schema") |
+
+## items Type
+
+`object` ([Details](list-users-output-items.md))
+
+# items Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :----------------------------- | :------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [display\_name](#display_name) | `string` | Required | cannot be null | [list-users output](list-users-output-items-properties-display_name.md "http://schema.nethserver.org/cluster/list-users-output.json#/items/properties/display_name") |
+| [user](#user) | `string` | Required | cannot be null | [list-users output](list-users-output-items-properties-user.md "http://schema.nethserver.org/cluster/list-users-output.json#/items/properties/user") |
+
+## display\_name
+
+Display name of the user
+
+`display_name`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-users output](list-users-output-items-properties-display_name.md "http://schema.nethserver.org/cluster/list-users-output.json#/items/properties/display_name")
+
+### display\_name Type
+
+`string`
+
+## user
+
+Unique username for the user
+
+`user`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [list-users output](list-users-output-items-properties-user.md "http://schema.nethserver.org/cluster/list-users-output.json#/items/properties/user")
+
+### user Type
+
+`string`
diff --git a/core/list-users-output.json b/core/list-users-output.json
new file mode 100644
index 000000000..3f8c93b8d
--- /dev/null
+++ b/core/list-users-output.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"list-users output","description":"Output schema of the list-users action","$id":"http://schema.nethserver.org/cluster/list-users-output.json","examples":[[{"display_name":"Admin","user":"admin"},{"display_name":"People","user":"people"}]],"type":"array","items":{"type":"object","properties":{"display_name":{"description":"Display name of the user","type":"string"},"user":{"description":"Unique username for the user","type":"string"}},"required":["display_name","user"]}}
diff --git a/core/list-users-output.md b/core/list-users-output.md
new file mode 100644
index 000000000..4cba3acc2
--- /dev/null
+++ b/core/list-users-output.md
@@ -0,0 +1,30 @@
+# list-users output Schema
+
+```txt
+http://schema.nethserver.org/cluster/list-users-output.json
+```
+
+Output schema of the list-users action
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-users-output.json](cluster/list-users-output.json "open original schema") |
+
+## list-users output Type
+
+`object[]` ([Details](list-users-output-items.md))
+
+## list-users output Examples
+
+```json
+[
+ {
+ "display_name": "Admin",
+ "user": "admin"
+ },
+ {
+ "display_name": "People",
+ "user": "people"
+ }
+]
+```
diff --git a/core/list-volumes-output-items.md b/core/list-volumes-output-items.md
new file mode 100644
index 000000000..d99374bc0
--- /dev/null
+++ b/core/list-volumes-output-items.md
@@ -0,0 +1,19 @@
+# Untitled string in List module volumes Schema
+
+```txt
+http://schema.nethserver.org/agent/list-volumes-output.json#/items
+```
+
+Podman volume name
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-volumes-output.json\*](agent/list-volumes-output.json "open original schema") |
+
+## items Type
+
+`string`
+
+## items Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/list-volumes-output.json b/core/list-volumes-output.json
new file mode 100644
index 000000000..9f4e1a5db
--- /dev/null
+++ b/core/list-volumes-output.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"List module volumes","$id":"http://schema.nethserver.org/agent/list-volumes-output.json","examples":[[{"name":"dokuwiki-data","created":"2021-07-19 10:19:45.528366456 +0200 CEST"}]],"type":"array","description":"A list of Podman volume names of the current module","items":{"type":"string","description":"Podman volume name","minLength":1}}
diff --git a/core/list-volumes-output.md b/core/list-volumes-output.md
new file mode 100644
index 000000000..5c1f9304b
--- /dev/null
+++ b/core/list-volumes-output.md
@@ -0,0 +1,26 @@
+# List module volumes Schema
+
+```txt
+http://schema.nethserver.org/agent/list-volumes-output.json
+```
+
+A list of Podman volume names of the current module
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [list-volumes-output.json](agent/list-volumes-output.json "open original schema") |
+
+## List module volumes Type
+
+`string[]`
+
+## List module volumes Examples
+
+```json
+[
+ {
+ "name": "dokuwiki-data",
+ "created": "2021-07-19 10:19:45.528366456 +0200 CEST"
+ }
+]
+```
diff --git a/core/node-definitions-ipv4-cidr.md b/core/node-definitions-ipv4-cidr.md
new file mode 100644
index 000000000..72ba829a7
--- /dev/null
+++ b/core/node-definitions-ipv4-cidr.md
@@ -0,0 +1,35 @@
+# IPv4 CIDR Schema
+
+```txt
+http://schema.nethserver.org/node.json#/definitions/ipv4-cidr
+```
+
+IPv4 with netmask in CIDR notation
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [node.json\*](node.json "open original schema") |
+
+## ipv4-cidr Type
+
+`string` ([IPv4 CIDR](node-definitions-ipv4-cidr.md))
+
+## ipv4-cidr Constraints
+
+**pattern**: the string must match the following regular expression:
+
+```regexp
+^([0-9]{1,3}\.){3}[0-9]{1,3}(\/([0-9]|[1-2][0-9]|3[0-2]))?$
+```
+
+[try pattern](https://regexr.com/?expression=%5E\(%5B0-9%5D%7B1%2C3%7D%5C.\)%7B3%7D%5B0-9%5D%7B1%2C3%7D\(%5C%2F\(%5B0-9%5D%7C%5B1-2%5D%5B0-9%5D%7C3%5B0-2%5D\)\)%3F%24 "try regular expression with regexr.com")
+
+## ipv4-cidr Examples
+
+```json
+"10.5.4.0/24"
+```
+
+```json
+"192.168.73.0/24"
+```
diff --git a/core/node-definitions.md b/core/node-definitions.md
new file mode 100644
index 000000000..b804db5b4
--- /dev/null
+++ b/core/node-definitions.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in Node library Schema
+
+```txt
+http://schema.nethserver.org/node.json#/definitions
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [node.json\*](node.json "open original schema") |
+
+## definitions Type
+
+unknown
diff --git a/core/node.json b/core/node.json
new file mode 100644
index 000000000..250cc7ecd
--- /dev/null
+++ b/core/node.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","$id":"http://schema.nethserver.org/node.json","title":"Node library","description":"Node actions validation data formats","definitions":{"ipv4-cidr":{"title":"IPv4 CIDR","description":"IPv4 with netmask in CIDR notation","type":"string","pattern":"^([0-9]{1,3}\\.){3}[0-9]{1,3}(\\/([0-9]|[1-2][0-9]|3[0-2]))?$","examples":["10.5.4.0/24","192.168.73.0/24"]}}}
diff --git a/core/node.md b/core/node.md
new file mode 100644
index 000000000..c89459836
--- /dev/null
+++ b/core/node.md
@@ -0,0 +1,28 @@
+# Node library Schema
+
+```txt
+http://schema.nethserver.org/node.json
+```
+
+Node actions validation data formats
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :--------------------- | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------- |
+| Cannot be instantiated | Yes | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [node.json](node.json "open original schema") |
+
+## Node library Type
+
+unknown ([Node library](node.md))
+
+# Node library Definitions
+
+## Definitions group ipv4-cidr
+
+Reference this group by using
+
+```json
+{"$ref":"http://schema.nethserver.org/node.json#/definitions/ipv4-cidr"}
+```
+
+| Property | Type | Required | Nullable | Defined by |
+| :------- | :--- | :------- | :------- | :--------- |
diff --git a/core/promote-node-input-properties-endpoint-address.md b/core/promote-node-input-properties-endpoint-address.md
new file mode 100644
index 000000000..52a9dccbe
--- /dev/null
+++ b/core/promote-node-input-properties-endpoint-address.md
@@ -0,0 +1,21 @@
+# Endpoint address Schema
+
+```txt
+http://schema.nethserver.org/cluster/promote-node-input.json#/properties/endpoint_address
+```
+
+Host name or IP address where the new leader node can be reached by other nodes
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [promote-node-input.json\*](cluster/promote-node-input.json "open original schema") |
+
+## endpoint\_address Type
+
+`string` ([Endpoint address](promote-node-input-properties-endpoint-address.md))
+
+## endpoint\_address Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+**hostname**: the string must be a hostname, according to [RFC 1123, section 2.1](https://tools.ietf.org/html/rfc1123 "check the specification")
diff --git a/core/promote-node-input-properties-endpoint-udp-port-for-vpn.md b/core/promote-node-input-properties-endpoint-udp-port-for-vpn.md
new file mode 100644
index 000000000..aa352f164
--- /dev/null
+++ b/core/promote-node-input-properties-endpoint-udp-port-for-vpn.md
@@ -0,0 +1,19 @@
+# Endpoint UDP port for VPN Schema
+
+```txt
+http://schema.nethserver.org/cluster/promote-node-input.json#/properties/endpoint_port
+```
+
+The UDP port number where Wireguard is listening. It must be reachable by other cluster nodes
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [promote-node-input.json\*](cluster/promote-node-input.json "open original schema") |
+
+## endpoint\_port Type
+
+`integer` ([Endpoint UDP port for VPN](promote-node-input-properties-endpoint-udp-port-for-vpn.md))
+
+## endpoint\_port Constraints
+
+**minimum**: the value of this number must greater than or equal to: `1`
diff --git a/core/promote-node-input-properties-endpoint-validation-flag.md b/core/promote-node-input-properties-endpoint-validation-flag.md
new file mode 100644
index 000000000..abf00108a
--- /dev/null
+++ b/core/promote-node-input-properties-endpoint-validation-flag.md
@@ -0,0 +1,15 @@
+# Endpoint validation flag Schema
+
+```txt
+http://schema.nethserver.org/cluster/promote-node-input.json#/properties/endpoint_validation
+```
+
+If set to "true", validate the endpoint with a connection attempt
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [promote-node-input.json\*](cluster/promote-node-input.json "open original schema") |
+
+## endpoint\_validation Type
+
+`boolean` ([Endpoint validation flag](promote-node-input-properties-endpoint-validation-flag.md))
diff --git a/core/promote-node-input-properties-node-identifier.md b/core/promote-node-input-properties-node-identifier.md
new file mode 100644
index 000000000..785a84c48
--- /dev/null
+++ b/core/promote-node-input-properties-node-identifier.md
@@ -0,0 +1,19 @@
+# Node identifier Schema
+
+```txt
+http://schema.nethserver.org/cluster/promote-node-input.json#/properties/node_id
+```
+
+The node ID of the new leader node
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [promote-node-input.json\*](cluster/promote-node-input.json "open original schema") |
+
+## node\_id Type
+
+`integer` ([Node identifier](promote-node-input-properties-node-identifier.md))
+
+## node\_id Constraints
+
+**minimum**: the value of this number must greater than or equal to: `1`
diff --git a/core/promote-node-input.json b/core/promote-node-input.json
new file mode 100644
index 000000000..6d18e0252
--- /dev/null
+++ b/core/promote-node-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"promote-node input","$id":"http://schema.nethserver.org/cluster/promote-node-input.json","description":"Promote a node to cluster leader","examples":[{"node_id":3,"endpoint_address":"4.5.6.7","endpoint_port":55820,"endpoint_validation":true}],"type":"object","required":["node_id","endpoint_address","endpoint_port"],"properties":{"node_id":{"title":"Node identifier","description":"The node ID of the new leader node","type":"integer","minimum":1},"endpoint_address":{"title":"Endpoint address","description":"Host name or IP address where the new leader node can be reached by other nodes","type":"string","format":"hostname","minLength":1},"endpoint_port":{"title":"Endpoint UDP port for VPN","description":"The UDP port number where Wireguard is listening. It must be reachable by other cluster nodes","type":"integer","minimum":1},"endpoint_validation":{"title":"Endpoint validation flag","description":"If set to \"true\", validate the endpoint with a connection attempt","type":"boolean"}}}
diff --git a/core/promote-node-input.md b/core/promote-node-input.md
new file mode 100644
index 000000000..0bbf1b0c3
--- /dev/null
+++ b/core/promote-node-input.md
@@ -0,0 +1,121 @@
+# promote-node input Schema
+
+```txt
+http://schema.nethserver.org/cluster/promote-node-input.json
+```
+
+Promote a node to cluster leader
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [promote-node-input.json](cluster/promote-node-input.json "open original schema") |
+
+## promote-node input Type
+
+`object` ([promote-node input](promote-node-input.md))
+
+## promote-node input Examples
+
+```json
+{
+ "node_id": 3,
+ "endpoint_address": "4.5.6.7",
+ "endpoint_port": 55820,
+ "endpoint_validation": true
+}
+```
+
+# promote-node input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------------------------- | :-------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [node\_id](#node_id) | `integer` | Required | cannot be null | [promote-node input](promote-node-input-properties-node-identifier.md "http://schema.nethserver.org/cluster/promote-node-input.json#/properties/node_id") |
+| [endpoint\_address](#endpoint_address) | `string` | Required | cannot be null | [promote-node input](promote-node-input-properties-endpoint-address.md "http://schema.nethserver.org/cluster/promote-node-input.json#/properties/endpoint_address") |
+| [endpoint\_port](#endpoint_port) | `integer` | Required | cannot be null | [promote-node input](promote-node-input-properties-endpoint-udp-port-for-vpn.md "http://schema.nethserver.org/cluster/promote-node-input.json#/properties/endpoint_port") |
+| [endpoint\_validation](#endpoint_validation) | `boolean` | Optional | cannot be null | [promote-node input](promote-node-input-properties-endpoint-validation-flag.md "http://schema.nethserver.org/cluster/promote-node-input.json#/properties/endpoint_validation") |
+
+## node\_id
+
+The node ID of the new leader node
+
+`node_id`
+
+* is required
+
+* Type: `integer` ([Node identifier](promote-node-input-properties-node-identifier.md))
+
+* cannot be null
+
+* defined in: [promote-node input](promote-node-input-properties-node-identifier.md "http://schema.nethserver.org/cluster/promote-node-input.json#/properties/node_id")
+
+### node\_id Type
+
+`integer` ([Node identifier](promote-node-input-properties-node-identifier.md))
+
+### node\_id Constraints
+
+**minimum**: the value of this number must greater than or equal to: `1`
+
+## endpoint\_address
+
+Host name or IP address where the new leader node can be reached by other nodes
+
+`endpoint_address`
+
+* is required
+
+* Type: `string` ([Endpoint address](promote-node-input-properties-endpoint-address.md))
+
+* cannot be null
+
+* defined in: [promote-node input](promote-node-input-properties-endpoint-address.md "http://schema.nethserver.org/cluster/promote-node-input.json#/properties/endpoint_address")
+
+### endpoint\_address Type
+
+`string` ([Endpoint address](promote-node-input-properties-endpoint-address.md))
+
+### endpoint\_address Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+**hostname**: the string must be a hostname, according to [RFC 1123, section 2.1](https://tools.ietf.org/html/rfc1123 "check the specification")
+
+## endpoint\_port
+
+The UDP port number where Wireguard is listening. It must be reachable by other cluster nodes
+
+`endpoint_port`
+
+* is required
+
+* Type: `integer` ([Endpoint UDP port for VPN](promote-node-input-properties-endpoint-udp-port-for-vpn.md))
+
+* cannot be null
+
+* defined in: [promote-node input](promote-node-input-properties-endpoint-udp-port-for-vpn.md "http://schema.nethserver.org/cluster/promote-node-input.json#/properties/endpoint_port")
+
+### endpoint\_port Type
+
+`integer` ([Endpoint UDP port for VPN](promote-node-input-properties-endpoint-udp-port-for-vpn.md))
+
+### endpoint\_port Constraints
+
+**minimum**: the value of this number must greater than or equal to: `1`
+
+## endpoint\_validation
+
+If set to "true", validate the endpoint with a connection attempt
+
+`endpoint_validation`
+
+* is optional
+
+* Type: `boolean` ([Endpoint validation flag](promote-node-input-properties-endpoint-validation-flag.md))
+
+* cannot be null
+
+* defined in: [promote-node input](promote-node-input-properties-endpoint-validation-flag.md "http://schema.nethserver.org/cluster/promote-node-input.json#/properties/endpoint_validation")
+
+### endpoint\_validation Type
+
+`boolean` ([Endpoint validation flag](promote-node-input-properties-endpoint-validation-flag.md))
diff --git a/core/read-backup-repositories-output-examples-0-0.md b/core/read-backup-repositories-output-examples-0-0.md
new file mode 100644
index 000000000..f99db7485
--- /dev/null
+++ b/core/read-backup-repositories-output-examples-0-0.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in read-backup-repositories output Schema
+
+```txt
+http://schema.nethserver.org/cluster/read-backup-repositories-output.json#/examples/0/0
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [read-backup-repositories-output.json\*](cluster/read-backup-repositories-output.json "open original schema") |
+
+## 0 Type
+
+unknown
diff --git a/core/read-backup-repositories-output.json b/core/read-backup-repositories-output.json
new file mode 100644
index 000000000..ddfd58ac4
--- /dev/null
+++ b/core/read-backup-repositories-output.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"read-backup-repositories output","$id":"http://schema.nethserver.org/cluster/read-backup-repositories-output.json","description":"Read the content of all backup repositories","examples":[[{"name":"dokuwiki","path":"dokuwiki/dokuwiki1@cc7335d7-4d67-408c-8c35-42257667e51b","uuid":"cc7335d7-4d67-408c-8c35-42257667e51b","timestamp":1644403745,"repository_id":"e181c936-1bc3-5032-a809-d8b0551eebe9","repository_name":"B2 repo","repository_provider":"backblaze","repository_url":"b2:giacomons8","installed_instance":"dokuwiki4","installed_instance_ui_name":"My Dokuwiki"}]]}
diff --git a/core/read-backup-repositories-output.md b/core/read-backup-repositories-output.md
new file mode 100644
index 000000000..b3e10059e
--- /dev/null
+++ b/core/read-backup-repositories-output.md
@@ -0,0 +1,34 @@
+# read-backup-repositories output Schema
+
+```txt
+http://schema.nethserver.org/cluster/read-backup-repositories-output.json
+```
+
+Read the content of all backup repositories
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [read-backup-repositories-output.json](cluster/read-backup-repositories-output.json "open original schema") |
+
+## read-backup-repositories output Type
+
+unknown ([read-backup-repositories output](read-backup-repositories-output.md))
+
+## read-backup-repositories output Examples
+
+```json
+[
+ {
+ "name": "dokuwiki",
+ "path": "dokuwiki/dokuwiki1@cc7335d7-4d67-408c-8c35-42257667e51b",
+ "uuid": "cc7335d7-4d67-408c-8c35-42257667e51b",
+ "timestamp": 1644403745,
+ "repository_id": "e181c936-1bc3-5032-a809-d8b0551eebe9",
+ "repository_name": "B2 repo",
+ "repository_provider": "backblaze",
+ "repository_url": "b2:giacomons8",
+ "installed_instance": "dokuwiki4",
+ "installed_instance_ui_name": "My Dokuwiki"
+ }
+]
+```
diff --git a/core/read-backup-snapshots-input-properties-backup-path.md b/core/read-backup-snapshots-input-properties-backup-path.md
new file mode 100644
index 000000000..4d1cdb254
--- /dev/null
+++ b/core/read-backup-snapshots-input-properties-backup-path.md
@@ -0,0 +1,19 @@
+# Backup path Schema
+
+```txt
+http://schema.nethserver.org/cluster/read-backup-snapshots-input.json#/properties/path
+```
+
+Path of the backup in the source repository
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [read-backup-snapshots-input.json\*](cluster/read-backup-snapshots-input.json "open original schema") |
+
+## path Type
+
+`string` ([Backup path](read-backup-snapshots-input-properties-backup-path.md))
+
+## path Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/read-backup-snapshots-input-properties-repository-id.md b/core/read-backup-snapshots-input-properties-repository-id.md
new file mode 100644
index 000000000..224b62798
--- /dev/null
+++ b/core/read-backup-snapshots-input-properties-repository-id.md
@@ -0,0 +1,19 @@
+# Repository ID Schema
+
+```txt
+http://schema.nethserver.org/cluster/read-backup-snapshots-input.json#/properties/repository
+```
+
+Backup source repository
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [read-backup-snapshots-input.json\*](cluster/read-backup-snapshots-input.json "open original schema") |
+
+## repository Type
+
+`string` ([Repository ID](read-backup-snapshots-input-properties-repository-id.md))
+
+## repository Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/read-backup-snapshots-input.json b/core/read-backup-snapshots-input.json
new file mode 100644
index 000000000..e8f1a460e
--- /dev/null
+++ b/core/read-backup-snapshots-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"read-backup-snaphots input","$id":"http://schema.nethserver.org/cluster/read-backup-snapshots-input.json","description":"Input schema of the read-backup-snapshots action","examples":[{"repository":"48ce000a-79b7-5fe6-8558-177fd70c27b4","path":"dokuwiki/dokuwiki1@f5d24fcd-819c-4b1d-98ad-a1b2ebcee8cf"}],"type":"object","required":["repository","path"],"properties":{"repository":{"title":"Repository ID","description":"Backup source repository","type":"string","minLength":1},"path":{"title":"Backup path","description":"Path of the backup in the source repository","type":"string","minLength":1}}}
diff --git a/core/read-backup-snapshots-input.md b/core/read-backup-snapshots-input.md
new file mode 100644
index 000000000..8dc8b882f
--- /dev/null
+++ b/core/read-backup-snapshots-input.md
@@ -0,0 +1,75 @@
+# read-backup-snaphots input Schema
+
+```txt
+http://schema.nethserver.org/cluster/read-backup-snapshots-input.json
+```
+
+Input schema of the read-backup-snapshots action
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [read-backup-snapshots-input.json](cluster/read-backup-snapshots-input.json "open original schema") |
+
+## read-backup-snaphots input Type
+
+`object` ([read-backup-snaphots input](read-backup-snapshots-input.md))
+
+## read-backup-snaphots input Examples
+
+```json
+{
+ "repository": "48ce000a-79b7-5fe6-8558-177fd70c27b4",
+ "path": "dokuwiki/dokuwiki1@f5d24fcd-819c-4b1d-98ad-a1b2ebcee8cf"
+}
+```
+
+# read-backup-snaphots input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------ | :------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [repository](#repository) | `string` | Required | cannot be null | [read-backup-snaphots input](read-backup-snapshots-input-properties-repository-id.md "http://schema.nethserver.org/cluster/read-backup-snapshots-input.json#/properties/repository") |
+| [path](#path) | `string` | Required | cannot be null | [read-backup-snaphots input](read-backup-snapshots-input-properties-backup-path.md "http://schema.nethserver.org/cluster/read-backup-snapshots-input.json#/properties/path") |
+
+## repository
+
+Backup source repository
+
+`repository`
+
+* is required
+
+* Type: `string` ([Repository ID](read-backup-snapshots-input-properties-repository-id.md))
+
+* cannot be null
+
+* defined in: [read-backup-snaphots input](read-backup-snapshots-input-properties-repository-id.md "http://schema.nethserver.org/cluster/read-backup-snapshots-input.json#/properties/repository")
+
+### repository Type
+
+`string` ([Repository ID](read-backup-snapshots-input-properties-repository-id.md))
+
+### repository Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## path
+
+Path of the backup in the source repository
+
+`path`
+
+* is required
+
+* Type: `string` ([Backup path](read-backup-snapshots-input-properties-backup-path.md))
+
+* cannot be null
+
+* defined in: [read-backup-snaphots input](read-backup-snapshots-input-properties-backup-path.md "http://schema.nethserver.org/cluster/read-backup-snapshots-input.json#/properties/path")
+
+### path Type
+
+`string` ([Backup path](read-backup-snapshots-input-properties-backup-path.md))
+
+### path Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/read-backup-snapshots-output-examples-0-0.md b/core/read-backup-snapshots-output-examples-0-0.md
new file mode 100644
index 000000000..da07f7ca5
--- /dev/null
+++ b/core/read-backup-snapshots-output-examples-0-0.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in read-backup-snapshots output Schema
+
+```txt
+http://schema.nethserver.org/cluster/read-backup-snapshots-output.json#/examples/0/0
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [read-backup-snapshots-output.json\*](cluster/read-backup-snapshots-output.json "open original schema") |
+
+## 0 Type
+
+unknown
diff --git a/core/read-backup-snapshots-output-examples-0-1.md b/core/read-backup-snapshots-output-examples-0-1.md
new file mode 100644
index 000000000..7643b7549
--- /dev/null
+++ b/core/read-backup-snapshots-output-examples-0-1.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in read-backup-snapshots output Schema
+
+```txt
+http://schema.nethserver.org/cluster/read-backup-snapshots-output.json#/examples/0/1
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [read-backup-snapshots-output.json\*](cluster/read-backup-snapshots-output.json "open original schema") |
+
+## 1 Type
+
+unknown
diff --git a/core/read-backup-snapshots-output-examples-0-2.md b/core/read-backup-snapshots-output-examples-0-2.md
new file mode 100644
index 000000000..4a2912e6f
--- /dev/null
+++ b/core/read-backup-snapshots-output-examples-0-2.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in read-backup-snapshots output Schema
+
+```txt
+http://schema.nethserver.org/cluster/read-backup-snapshots-output.json#/examples/0/2
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [read-backup-snapshots-output.json\*](cluster/read-backup-snapshots-output.json "open original schema") |
+
+## 2 Type
+
+unknown
diff --git a/core/read-backup-snapshots-output-examples-0-3.md b/core/read-backup-snapshots-output-examples-0-3.md
new file mode 100644
index 000000000..3cb6d7a6c
--- /dev/null
+++ b/core/read-backup-snapshots-output-examples-0-3.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in read-backup-snapshots output Schema
+
+```txt
+http://schema.nethserver.org/cluster/read-backup-snapshots-output.json#/examples/0/3
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [read-backup-snapshots-output.json\*](cluster/read-backup-snapshots-output.json "open original schema") |
+
+## 3 Type
+
+unknown
diff --git a/core/read-backup-snapshots-output-examples-0-4.md b/core/read-backup-snapshots-output-examples-0-4.md
new file mode 100644
index 000000000..7517e5d26
--- /dev/null
+++ b/core/read-backup-snapshots-output-examples-0-4.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in read-backup-snapshots output Schema
+
+```txt
+http://schema.nethserver.org/cluster/read-backup-snapshots-output.json#/examples/0/4
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [read-backup-snapshots-output.json\*](cluster/read-backup-snapshots-output.json "open original schema") |
+
+## 4 Type
+
+unknown
diff --git a/core/read-backup-snapshots-output.json b/core/read-backup-snapshots-output.json
new file mode 100644
index 000000000..2e96a6abb
--- /dev/null
+++ b/core/read-backup-snapshots-output.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"read-backup-snapshots output","$id":"http://schema.nethserver.org/cluster/read-backup-snapshots-output.json","description":"Read the snaphost list of a given backup","examples":[[{"timestamp":1643964838,"id":"a2a4cb238e4bd428900756376d4ff94009a8f487effe25c145bfaffa72406693"},{"timestamp":1644037213,"id":"e993a67283eefa7a5d148284790e526f70f360788ed71e17e18406bc5a8a1185"},{"timestamp":1644123618,"id":"4ea007b7770cfab125ab6035ae5371fe0e87464b8caa1607b2ced8c7e8732b4a"},{"timestamp":1644210013,"id":"72a3cecc8b6acbd1610ebabd9aae1ac2b0b96864fa986a7437188036378e61ad"},{"timestamp":1644296416,"id":"ebd99130107f282e47e7eb161de8fe14e0b832b7eacb04c9bf60761407e6081a"}]]}
diff --git a/core/read-backup-snapshots-output.md b/core/read-backup-snapshots-output.md
new file mode 100644
index 000000000..43c0b699f
--- /dev/null
+++ b/core/read-backup-snapshots-output.md
@@ -0,0 +1,42 @@
+# read-backup-snapshots output Schema
+
+```txt
+http://schema.nethserver.org/cluster/read-backup-snapshots-output.json
+```
+
+Read the snaphost list of a given backup
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [read-backup-snapshots-output.json](cluster/read-backup-snapshots-output.json "open original schema") |
+
+## read-backup-snapshots output Type
+
+unknown ([read-backup-snapshots output](read-backup-snapshots-output.md))
+
+## read-backup-snapshots output Examples
+
+```json
+[
+ {
+ "timestamp": 1643964838,
+ "id": "a2a4cb238e4bd428900756376d4ff94009a8f487effe25c145bfaffa72406693"
+ },
+ {
+ "timestamp": 1644037213,
+ "id": "e993a67283eefa7a5d148284790e526f70f360788ed71e17e18406bc5a8a1185"
+ },
+ {
+ "timestamp": 1644123618,
+ "id": "4ea007b7770cfab125ab6035ae5371fe0e87464b8caa1607b2ced8c7e8732b4a"
+ },
+ {
+ "timestamp": 1644210013,
+ "id": "72a3cecc8b6acbd1610ebabd9aae1ac2b0b96864fa986a7437188036378e61ad"
+ },
+ {
+ "timestamp": 1644296416,
+ "id": "ebd99130107f282e47e7eb161de8fe14e0b832b7eacb04c9bf60761407e6081a"
+ }
+]
+```
diff --git a/core/remove-backup-input-properties-backup-id.md b/core/remove-backup-input-properties-backup-id.md
new file mode 100644
index 000000000..a80e4cf39
--- /dev/null
+++ b/core/remove-backup-input-properties-backup-id.md
@@ -0,0 +1,15 @@
+# Backup ID Schema
+
+```txt
+http://schema.nethserver.org/cluster/remove-backup-input.json#/properties/id
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [remove-backup-input.json\*](cluster/remove-backup-input.json "open original schema") |
+
+## id Type
+
+`integer` ([Backup ID](remove-backup-input-properties-backup-id.md))
diff --git a/core/remove-backup-input.json b/core/remove-backup-input.json
new file mode 100644
index 000000000..4eb72de01
--- /dev/null
+++ b/core/remove-backup-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"remove-backup input","description":"Remove a backup object","$id":"http://schema.nethserver.org/cluster/remove-backup-input.json","examples":[{"id":7}],"type":"object","required":["id"],"properties":{"id":{"type":"integer","title":"Backup ID"}}}
diff --git a/core/remove-backup-input.md b/core/remove-backup-input.md
new file mode 100644
index 000000000..73ea80c86
--- /dev/null
+++ b/core/remove-backup-input.md
@@ -0,0 +1,47 @@
+# remove-backup input Schema
+
+```txt
+http://schema.nethserver.org/cluster/remove-backup-input.json
+```
+
+Remove a backup object
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [remove-backup-input.json](cluster/remove-backup-input.json "open original schema") |
+
+## remove-backup input Type
+
+`object` ([remove-backup input](remove-backup-input.md))
+
+## remove-backup input Examples
+
+```json
+{
+ "id": 7
+}
+```
+
+# remove-backup input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :-------- | :-------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------ |
+| [id](#id) | `integer` | Required | cannot be null | [remove-backup input](remove-backup-input-properties-backup-id.md "http://schema.nethserver.org/cluster/remove-backup-input.json#/properties/id") |
+
+## id
+
+
+
+`id`
+
+* is required
+
+* Type: `integer` ([Backup ID](remove-backup-input-properties-backup-id.md))
+
+* cannot be null
+
+* defined in: [remove-backup input](remove-backup-input-properties-backup-id.md "http://schema.nethserver.org/cluster/remove-backup-input.json#/properties/id")
+
+### id Type
+
+`integer` ([Backup ID](remove-backup-input-properties-backup-id.md))
diff --git a/core/remove-backup-repository-input-properties-repository-id.md b/core/remove-backup-repository-input-properties-repository-id.md
new file mode 100644
index 000000000..009b00f98
--- /dev/null
+++ b/core/remove-backup-repository-input-properties-repository-id.md
@@ -0,0 +1,19 @@
+# Repository ID Schema
+
+```txt
+http://schema.nethserver.org/cluster/remove-backup-repository-input.json#/properties/id
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [remove-backup-repository-input.json\*](cluster/remove-backup-repository-input.json "open original schema") |
+
+## id Type
+
+`string` ([Repository ID](remove-backup-repository-input-properties-repository-id.md))
+
+## id Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/remove-backup-repository-input.json b/core/remove-backup-repository-input.json
new file mode 100644
index 000000000..e72912f61
--- /dev/null
+++ b/core/remove-backup-repository-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"remove-backup-repository input","description":"Remove a backup repository and any related backup object","$id":"http://schema.nethserver.org/cluster/remove-backup-repository-input.json","examples":[{"id":"183f7ae2-7649-5bb5-8742-9ee24d058b8b"}],"type":"object","required":["id"],"properties":{"id":{"type":"string","title":"Repository ID","minLength":1}}}
diff --git a/core/remove-backup-repository-input.md b/core/remove-backup-repository-input.md
new file mode 100644
index 000000000..82c0db494
--- /dev/null
+++ b/core/remove-backup-repository-input.md
@@ -0,0 +1,51 @@
+# remove-backup-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/remove-backup-repository-input.json
+```
+
+Remove a backup repository and any related backup object
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [remove-backup-repository-input.json](cluster/remove-backup-repository-input.json "open original schema") |
+
+## remove-backup-repository input Type
+
+`object` ([remove-backup-repository input](remove-backup-repository-input.md))
+
+## remove-backup-repository input Examples
+
+```json
+{
+ "id": "183f7ae2-7649-5bb5-8742-9ee24d058b8b"
+}
+```
+
+# remove-backup-repository input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :-------- | :------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [id](#id) | `string` | Required | cannot be null | [remove-backup-repository input](remove-backup-repository-input-properties-repository-id.md "http://schema.nethserver.org/cluster/remove-backup-repository-input.json#/properties/id") |
+
+## id
+
+
+
+`id`
+
+* is required
+
+* Type: `string` ([Repository ID](remove-backup-repository-input-properties-repository-id.md))
+
+* cannot be null
+
+* defined in: [remove-backup-repository input](remove-backup-repository-input-properties-repository-id.md "http://schema.nethserver.org/cluster/remove-backup-repository-input.json#/properties/id")
+
+### id Type
+
+`string` ([Repository ID](remove-backup-repository-input-properties-repository-id.md))
+
+### id Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/remove-custom-zone-input-properties-zone-name.md b/core/remove-custom-zone-input-properties-zone-name.md
new file mode 100644
index 000000000..c80ad5c91
--- /dev/null
+++ b/core/remove-custom-zone-input-properties-zone-name.md
@@ -0,0 +1,19 @@
+# Zone name Schema
+
+```txt
+http://schema.nethserver.org/node/remove-custom-zone-input.json#/properties/service
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [remove-custom-zone-input.json\*](node/remove-custom-zone-input.json "open original schema") |
+
+## service Type
+
+`string` ([Zone name](remove-custom-zone-input-properties-zone-name.md))
+
+## service Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/remove-custom-zone-input.json b/core/remove-custom-zone-input.json
new file mode 100644
index 000000000..48bce9f9d
--- /dev/null
+++ b/core/remove-custom-zone-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"remove-custom-zone input","$id":"http://schema.nethserver.org/node/remove-custom-zone-input.json","description":"Remove firewall configuration for the given zone","examples":[{"zone":"myzone"}],"type":"object","required":["zone"],"properties":{"service":{"type":"string","title":"Zone name","minLength":1}}}
diff --git a/core/remove-custom-zone-input.md b/core/remove-custom-zone-input.md
new file mode 100644
index 000000000..75602ddb4
--- /dev/null
+++ b/core/remove-custom-zone-input.md
@@ -0,0 +1,51 @@
+# remove-custom-zone input Schema
+
+```txt
+http://schema.nethserver.org/node/remove-custom-zone-input.json
+```
+
+Remove firewall configuration for the given zone
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :----------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [remove-custom-zone-input.json](node/remove-custom-zone-input.json "open original schema") |
+
+## remove-custom-zone input Type
+
+`object` ([remove-custom-zone input](remove-custom-zone-input.md))
+
+## remove-custom-zone input Examples
+
+```json
+{
+ "zone": "myzone"
+}
+```
+
+# remove-custom-zone input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------ | :------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [service](#service) | `string` | Optional | cannot be null | [remove-custom-zone input](remove-custom-zone-input-properties-zone-name.md "http://schema.nethserver.org/node/remove-custom-zone-input.json#/properties/service") |
+
+## service
+
+
+
+`service`
+
+* is optional
+
+* Type: `string` ([Zone name](remove-custom-zone-input-properties-zone-name.md))
+
+* cannot be null
+
+* defined in: [remove-custom-zone input](remove-custom-zone-input-properties-zone-name.md "http://schema.nethserver.org/node/remove-custom-zone-input.json#/properties/service")
+
+### service Type
+
+`string` ([Zone name](remove-custom-zone-input-properties-zone-name.md))
+
+### service Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/remove-external-domain-input-properties-user-domain-name.md b/core/remove-external-domain-input-properties-user-domain-name.md
new file mode 100644
index 000000000..73f3e5d45
--- /dev/null
+++ b/core/remove-external-domain-input-properties-user-domain-name.md
@@ -0,0 +1,19 @@
+# User domain name Schema
+
+```txt
+http://schema.nethserver.org/cluster/remove-external-domain-input.json#/properties/domain
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [remove-external-domain-input.json\*](cluster/remove-external-domain-input.json "open original schema") |
+
+## domain Type
+
+`string` ([User domain name](remove-external-domain-input-properties-user-domain-name.md))
+
+## domain Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/remove-external-domain-input.json b/core/remove-external-domain-input.json
new file mode 100644
index 000000000..ebb02636a
--- /dev/null
+++ b/core/remove-external-domain-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"remove-external-domain input","description":"Remove an external user domain and all its providers","$id":"http://schema.nethserver.org/cluster/remove-external-domain-input.json","examples":[{"domain":"example.com"}],"type":"object","required":["domain"],"properties":{"domain":{"type":"string","title":"User domain name","minLength":1}}}
diff --git a/core/remove-external-domain-input.md b/core/remove-external-domain-input.md
new file mode 100644
index 000000000..89a5ae74e
--- /dev/null
+++ b/core/remove-external-domain-input.md
@@ -0,0 +1,51 @@
+# remove-external-domain input Schema
+
+```txt
+http://schema.nethserver.org/cluster/remove-external-domain-input.json
+```
+
+Remove an external user domain and all its providers
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [remove-external-domain-input.json](cluster/remove-external-domain-input.json "open original schema") |
+
+## remove-external-domain input Type
+
+`object` ([remove-external-domain input](remove-external-domain-input.md))
+
+## remove-external-domain input Examples
+
+```json
+{
+ "domain": "example.com"
+}
+```
+
+# remove-external-domain input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :---------------- | :------- | :------- | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [domain](#domain) | `string` | Required | cannot be null | [remove-external-domain input](remove-external-domain-input-properties-user-domain-name.md "http://schema.nethserver.org/cluster/remove-external-domain-input.json#/properties/domain") |
+
+## domain
+
+
+
+`domain`
+
+* is required
+
+* Type: `string` ([User domain name](remove-external-domain-input-properties-user-domain-name.md))
+
+* cannot be null
+
+* defined in: [remove-external-domain input](remove-external-domain-input-properties-user-domain-name.md "http://schema.nethserver.org/cluster/remove-external-domain-input.json#/properties/domain")
+
+### domain Type
+
+`string` ([User domain name](remove-external-domain-input-properties-user-domain-name.md))
+
+### domain Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/remove-external-provider-input-anyof-0-protocol-property-is-ldap-properties-protocol.md b/core/remove-external-provider-input-anyof-0-protocol-property-is-ldap-properties-protocol.md
new file mode 100644
index 000000000..40a271691
--- /dev/null
+++ b/core/remove-external-provider-input-anyof-0-protocol-property-is-ldap-properties-protocol.md
@@ -0,0 +1,23 @@
+# Untitled string in remove-external-provider input Schema
+
+```txt
+http://schema.nethserver.org/cluster/remove-external-provider-input.json#/anyOf/0/not/properties/protocol
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [remove-external-provider-input.json\*](cluster/remove-external-provider-input.json "open original schema") |
+
+## protocol Type
+
+`string`
+
+## protocol Constraints
+
+**constant**: the value of this property must be equal to:
+
+```json
+"ldap"
+```
diff --git a/core/remove-external-provider-input-anyof-0-protocol-property-is-ldap.md b/core/remove-external-provider-input-anyof-0-protocol-property-is-ldap.md
new file mode 100644
index 000000000..ff4a6448e
--- /dev/null
+++ b/core/remove-external-provider-input-anyof-0-protocol-property-is-ldap.md
@@ -0,0 +1,47 @@
+# Protocol property is ldap Schema
+
+```txt
+http://schema.nethserver.org/cluster/remove-external-provider-input.json#/anyOf/0/not
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [remove-external-provider-input.json\*](cluster/remove-external-provider-input.json "open original schema") |
+
+## not Type
+
+`object` ([Protocol property is ldap](remove-external-provider-input-anyof-0-protocol-property-is-ldap.md))
+
+# not Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :-------------------- | :------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| [protocol](#protocol) | `string` | Optional | cannot be null | [remove-external-provider input](remove-external-provider-input-anyof-0-protocol-property-is-ldap-properties-protocol.md "http://schema.nethserver.org/cluster/remove-external-provider-input.json#/anyOf/0/not/properties/protocol") |
+
+## protocol
+
+
+
+`protocol`
+
+* is optional
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [remove-external-provider input](remove-external-provider-input-anyof-0-protocol-property-is-ldap-properties-protocol.md "http://schema.nethserver.org/cluster/remove-external-provider-input.json#/anyOf/0/not/properties/protocol")
+
+### protocol Type
+
+`string`
+
+### protocol Constraints
+
+**constant**: the value of this property must be equal to:
+
+```json
+"ldap"
+```
diff --git a/core/remove-external-provider-input-anyof-0.md b/core/remove-external-provider-input-anyof-0.md
new file mode 100644
index 000000000..052d78f6d
--- /dev/null
+++ b/core/remove-external-provider-input-anyof-0.md
@@ -0,0 +1,19 @@
+# Untitled undefined type in remove-external-provider input Schema
+
+```txt
+http://schema.nethserver.org/cluster/remove-external-provider-input.json#/anyOf/0
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [remove-external-provider-input.json\*](cluster/remove-external-provider-input.json "open original schema") |
+
+## 0 Type
+
+merged type ([Details](remove-external-provider-input-anyof-0.md))
+
+not
+
+* [Protocol property is ldap](remove-external-provider-input-anyof-0-protocol-property-is-ldap.md "check type definition")
diff --git a/core/remove-external-provider-input-defs-tcp-service-endpoint-properties-host.md b/core/remove-external-provider-input-defs-tcp-service-endpoint-properties-host.md
new file mode 100644
index 000000000..e4f81d942
--- /dev/null
+++ b/core/remove-external-provider-input-defs-tcp-service-endpoint-properties-host.md
@@ -0,0 +1,19 @@
+# Untitled string in remove-external-provider input Schema
+
+```txt
+http://schema.nethserver.org/cluster/remove-external-provider-input.json#/$defs/tcp-service-endpoint/properties/host
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [remove-external-provider-input.json\*](cluster/remove-external-provider-input.json "open original schema") |
+
+## host Type
+
+`string`
+
+## host Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/remove-external-provider-input-defs-tcp-service-endpoint-properties-port.md b/core/remove-external-provider-input-defs-tcp-service-endpoint-properties-port.md
new file mode 100644
index 000000000..5300cc873
--- /dev/null
+++ b/core/remove-external-provider-input-defs-tcp-service-endpoint-properties-port.md
@@ -0,0 +1,21 @@
+# Untitled integer in remove-external-provider input Schema
+
+```txt
+http://schema.nethserver.org/cluster/remove-external-provider-input.json#/$defs/tcp-service-endpoint/properties/port
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [remove-external-provider-input.json\*](cluster/remove-external-provider-input.json "open original schema") |
+
+## port Type
+
+`integer`
+
+## port Constraints
+
+**maximum**: the value of this number must smaller than or equal to: `65535`
+
+**minimum**: the value of this number must greater than or equal to: `1`
diff --git a/core/remove-external-provider-input-defs-tcp-service-endpoint.md b/core/remove-external-provider-input-defs-tcp-service-endpoint.md
new file mode 100644
index 000000000..b7fc601a5
--- /dev/null
+++ b/core/remove-external-provider-input-defs-tcp-service-endpoint.md
@@ -0,0 +1,68 @@
+# TCP service endpoint Schema
+
+```txt
+http://schema.nethserver.org/cluster/remove-external-provider-input.json#/$defs/tcp-service-endpoint
+```
+
+Initial TCP backend endpoint configuration
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [remove-external-provider-input.json\*](cluster/remove-external-provider-input.json "open original schema") |
+
+## tcp-service-endpoint Type
+
+`object` ([TCP service endpoint](remove-external-provider-input-defs-tcp-service-endpoint.md))
+
+# tcp-service-endpoint Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------ | :-------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [host](#host) | `string` | Required | cannot be null | [remove-external-provider input](remove-external-provider-input-defs-tcp-service-endpoint-properties-host.md "http://schema.nethserver.org/cluster/remove-external-provider-input.json#/$defs/tcp-service-endpoint/properties/host") |
+| [port](#port) | `integer` | Required | cannot be null | [remove-external-provider input](remove-external-provider-input-defs-tcp-service-endpoint-properties-port.md "http://schema.nethserver.org/cluster/remove-external-provider-input.json#/$defs/tcp-service-endpoint/properties/port") |
+
+## host
+
+
+
+`host`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [remove-external-provider input](remove-external-provider-input-defs-tcp-service-endpoint-properties-host.md "http://schema.nethserver.org/cluster/remove-external-provider-input.json#/$defs/tcp-service-endpoint/properties/host")
+
+### host Type
+
+`string`
+
+### host Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## port
+
+
+
+`port`
+
+* is required
+
+* Type: `integer`
+
+* cannot be null
+
+* defined in: [remove-external-provider input](remove-external-provider-input-defs-tcp-service-endpoint-properties-port.md "http://schema.nethserver.org/cluster/remove-external-provider-input.json#/$defs/tcp-service-endpoint/properties/port")
+
+### port Type
+
+`integer`
+
+### port Constraints
+
+**maximum**: the value of this number must smaller than or equal to: `65535`
+
+**minimum**: the value of this number must greater than or equal to: `1`
diff --git a/core/remove-external-provider-input-defs.md b/core/remove-external-provider-input-defs.md
new file mode 100644
index 000000000..f4917d9f7
--- /dev/null
+++ b/core/remove-external-provider-input-defs.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in remove-external-provider input Schema
+
+```txt
+http://schema.nethserver.org/cluster/remove-external-provider-input.json#/$defs
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [remove-external-provider-input.json\*](cluster/remove-external-provider-input.json "open original schema") |
+
+## $defs Type
+
+unknown
diff --git a/core/remove-external-provider-input-properties-provider-protocol.md b/core/remove-external-provider-input-properties-provider-protocol.md
new file mode 100644
index 000000000..68aaa5beb
--- /dev/null
+++ b/core/remove-external-provider-input-properties-provider-protocol.md
@@ -0,0 +1,23 @@
+# Provider protocol Schema
+
+```txt
+http://schema.nethserver.org/cluster/remove-external-provider-input.json#/properties/protocol
+```
+
+Protocol used to communicate with the domain providers.
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [remove-external-provider-input.json\*](cluster/remove-external-provider-input.json "open original schema") |
+
+## protocol Type
+
+`string` ([Provider protocol](remove-external-provider-input-properties-provider-protocol.md))
+
+## protocol Constraints
+
+**enum**: the value of this property must be equal to one of the following values:
+
+| Value | Explanation |
+| :------- | :---------- |
+| `"ldap"` | |
diff --git a/core/remove-external-provider-input-properties-user-domain-name.md b/core/remove-external-provider-input-properties-user-domain-name.md
new file mode 100644
index 000000000..7a3abf1d4
--- /dev/null
+++ b/core/remove-external-provider-input-properties-user-domain-name.md
@@ -0,0 +1,19 @@
+# User domain name Schema
+
+```txt
+http://schema.nethserver.org/cluster/remove-external-provider-input.json#/properties/domain
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [remove-external-provider-input.json\*](cluster/remove-external-provider-input.json "open original schema") |
+
+## domain Type
+
+`string` ([User domain name](remove-external-provider-input-properties-user-domain-name.md))
+
+## domain Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/remove-external-provider-input.json b/core/remove-external-provider-input.json
new file mode 100644
index 000000000..578dadfa3
--- /dev/null
+++ b/core/remove-external-provider-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"remove-external-provider input","description":"Remove an external user domain provider","$id":"http://schema.nethserver.org/cluster/remove-external-provider-input.json","examples":[{"domain":"example.com","protocol":"ldap","host":"ldap2.example.com","port":636}],"type":"object","required":["domain","protocol"],"properties":{"domain":{"type":"string","title":"User domain name","minLength":1},"protocol":{"type":"string","title":"Provider protocol","description":"Protocol used to communicate with the domain providers.","enum":["ldap"]}},"anyOf":[{"not":{"type":"object","title":"Protocol property is ldap","properties":{"protocol":{"type":"string","const":"ldap"}}}},{"$ref":"#/$defs/tcp-service-endpoint"}],"$defs":{"tcp-service-endpoint":{"type":"object","title":"TCP service endpoint","description":"Initial TCP backend endpoint configuration","properties":{"host":{"type":"string","minLength":1},"port":{"type":"integer","minimum":1,"maximum":65535}},"required":["host","port"]}}}
diff --git a/core/remove-external-provider-input.md b/core/remove-external-provider-input.md
new file mode 100644
index 000000000..fceb04a0e
--- /dev/null
+++ b/core/remove-external-provider-input.md
@@ -0,0 +1,150 @@
+# remove-external-provider input Schema
+
+```txt
+http://schema.nethserver.org/cluster/remove-external-provider-input.json
+```
+
+Remove an external user domain provider
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [remove-external-provider-input.json](cluster/remove-external-provider-input.json "open original schema") |
+
+## remove-external-provider input Type
+
+`object` ([remove-external-provider input](remove-external-provider-input.md))
+
+any of
+
+* not
+
+ * [Protocol property is ldap](remove-external-provider-input-anyof-0-protocol-property-is-ldap.md "check type definition")
+
+* [TCP service endpoint](remove-external-provider-input-defs-tcp-service-endpoint.md "check type definition")
+
+## remove-external-provider input Examples
+
+```json
+{
+ "domain": "example.com",
+ "protocol": "ldap",
+ "host": "ldap2.example.com",
+ "port": 636
+}
+```
+
+# remove-external-provider input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :-------------------- | :------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [domain](#domain) | `string` | Required | cannot be null | [remove-external-provider input](remove-external-provider-input-properties-user-domain-name.md "http://schema.nethserver.org/cluster/remove-external-provider-input.json#/properties/domain") |
+| [protocol](#protocol) | `string` | Required | cannot be null | [remove-external-provider input](remove-external-provider-input-properties-provider-protocol.md "http://schema.nethserver.org/cluster/remove-external-provider-input.json#/properties/protocol") |
+
+## domain
+
+
+
+`domain`
+
+* is required
+
+* Type: `string` ([User domain name](remove-external-provider-input-properties-user-domain-name.md))
+
+* cannot be null
+
+* defined in: [remove-external-provider input](remove-external-provider-input-properties-user-domain-name.md "http://schema.nethserver.org/cluster/remove-external-provider-input.json#/properties/domain")
+
+### domain Type
+
+`string` ([User domain name](remove-external-provider-input-properties-user-domain-name.md))
+
+### domain Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## protocol
+
+Protocol used to communicate with the domain providers.
+
+`protocol`
+
+* is required
+
+* Type: `string` ([Provider protocol](remove-external-provider-input-properties-provider-protocol.md))
+
+* cannot be null
+
+* defined in: [remove-external-provider input](remove-external-provider-input-properties-provider-protocol.md "http://schema.nethserver.org/cluster/remove-external-provider-input.json#/properties/protocol")
+
+### protocol Type
+
+`string` ([Provider protocol](remove-external-provider-input-properties-provider-protocol.md))
+
+### protocol Constraints
+
+**enum**: the value of this property must be equal to one of the following values:
+
+| Value | Explanation |
+| :------- | :---------- |
+| `"ldap"` | |
+
+# remove-external-provider input Definitions
+
+## Definitions group tcp-service-endpoint
+
+Reference this group by using
+
+```json
+{"$ref":"http://schema.nethserver.org/cluster/remove-external-provider-input.json#/$defs/tcp-service-endpoint"}
+```
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------ | :-------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [host](#host) | `string` | Required | cannot be null | [remove-external-provider input](remove-external-provider-input-defs-tcp-service-endpoint-properties-host.md "http://schema.nethserver.org/cluster/remove-external-provider-input.json#/$defs/tcp-service-endpoint/properties/host") |
+| [port](#port) | `integer` | Required | cannot be null | [remove-external-provider input](remove-external-provider-input-defs-tcp-service-endpoint-properties-port.md "http://schema.nethserver.org/cluster/remove-external-provider-input.json#/$defs/tcp-service-endpoint/properties/port") |
+
+### host
+
+
+
+`host`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [remove-external-provider input](remove-external-provider-input-defs-tcp-service-endpoint-properties-host.md "http://schema.nethserver.org/cluster/remove-external-provider-input.json#/$defs/tcp-service-endpoint/properties/host")
+
+#### host Type
+
+`string`
+
+#### host Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+### port
+
+
+
+`port`
+
+* is required
+
+* Type: `integer`
+
+* cannot be null
+
+* defined in: [remove-external-provider input](remove-external-provider-input-defs-tcp-service-endpoint-properties-port.md "http://schema.nethserver.org/cluster/remove-external-provider-input.json#/$defs/tcp-service-endpoint/properties/port")
+
+#### port Type
+
+`integer`
+
+#### port Constraints
+
+**maximum**: the value of this number must smaller than or equal to: `65535`
+
+**minimum**: the value of this number must greater than or equal to: `1`
diff --git a/core/remove-favorite-input-properties-instance.md b/core/remove-favorite-input-properties-instance.md
new file mode 100644
index 000000000..06dd019a2
--- /dev/null
+++ b/core/remove-favorite-input-properties-instance.md
@@ -0,0 +1,15 @@
+# Untitled string in remove-favorite input Schema
+
+```txt
+http://schema.nethserver.org/cluster/remove-favorite-input.json#/properties/instance
+```
+
+Instance name
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [remove-favorite-input.json\*](cluster/remove-favorite-input.json "open original schema") |
+
+## instance Type
+
+`string`
diff --git a/core/remove-favorite-input.json b/core/remove-favorite-input.json
new file mode 100644
index 000000000..554224cf8
--- /dev/null
+++ b/core/remove-favorite-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"remove-favorite input","$id":"http://schema.nethserver.org/cluster/remove-favorite-input.json","description":"Input schema of the remove-favorite action","examples":[{"instance":"dokuwiki1"}],"type":"object","properties":{"instance":{"description":"Instance name","type":"string"}},"required":["instance"]}
diff --git a/core/remove-favorite-input.md b/core/remove-favorite-input.md
new file mode 100644
index 000000000..cbcc501df
--- /dev/null
+++ b/core/remove-favorite-input.md
@@ -0,0 +1,47 @@
+# remove-favorite input Schema
+
+```txt
+http://schema.nethserver.org/cluster/remove-favorite-input.json
+```
+
+Input schema of the remove-favorite action
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [remove-favorite-input.json](cluster/remove-favorite-input.json "open original schema") |
+
+## remove-favorite input Type
+
+`object` ([remove-favorite input](remove-favorite-input.md))
+
+## remove-favorite input Examples
+
+```json
+{
+ "instance": "dokuwiki1"
+}
+```
+
+# remove-favorite input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :-------------------- | :------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [instance](#instance) | `string` | Required | cannot be null | [remove-favorite input](remove-favorite-input-properties-instance.md "http://schema.nethserver.org/cluster/remove-favorite-input.json#/properties/instance") |
+
+## instance
+
+Instance name
+
+`instance`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [remove-favorite input](remove-favorite-input-properties-instance.md "http://schema.nethserver.org/cluster/remove-favorite-input.json#/properties/instance")
+
+### instance Type
+
+`string`
diff --git a/core/remove-internal-domain-input-properties-user-domain-name.md b/core/remove-internal-domain-input-properties-user-domain-name.md
new file mode 100644
index 000000000..460e67a50
--- /dev/null
+++ b/core/remove-internal-domain-input-properties-user-domain-name.md
@@ -0,0 +1,19 @@
+# User domain name Schema
+
+```txt
+http://schema.nethserver.org/cluster/remove-internal-domain-input.json#/properties/domain
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [remove-internal-domain-input.json\*](cluster/remove-internal-domain-input.json "open original schema") |
+
+## domain Type
+
+`string` ([User domain name](remove-internal-domain-input-properties-user-domain-name.md))
+
+## domain Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/remove-internal-domain-input.json b/core/remove-internal-domain-input.json
new file mode 100644
index 000000000..9e55cbb0d
--- /dev/null
+++ b/core/remove-internal-domain-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"remove-internal-domain input","$id":"http://schema.nethserver.org/cluster/remove-internal-domain-input.json","description":"Remove an internal user domain and all its providers","examples":[{"domain":"example.com"}],"type":"object","required":["domain"],"properties":{"domain":{"type":"string","title":"User domain name","minLength":1}}}
diff --git a/core/remove-internal-domain-input.md b/core/remove-internal-domain-input.md
new file mode 100644
index 000000000..a65183cf9
--- /dev/null
+++ b/core/remove-internal-domain-input.md
@@ -0,0 +1,51 @@
+# remove-internal-domain input Schema
+
+```txt
+http://schema.nethserver.org/cluster/remove-internal-domain-input.json
+```
+
+Remove an internal user domain and all its providers
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [remove-internal-domain-input.json](cluster/remove-internal-domain-input.json "open original schema") |
+
+## remove-internal-domain input Type
+
+`object` ([remove-internal-domain input](remove-internal-domain-input.md))
+
+## remove-internal-domain input Examples
+
+```json
+{
+ "domain": "example.com"
+}
+```
+
+# remove-internal-domain input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :---------------- | :------- | :------- | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [domain](#domain) | `string` | Required | cannot be null | [remove-internal-domain input](remove-internal-domain-input-properties-user-domain-name.md "http://schema.nethserver.org/cluster/remove-internal-domain-input.json#/properties/domain") |
+
+## domain
+
+
+
+`domain`
+
+* is required
+
+* Type: `string` ([User domain name](remove-internal-domain-input-properties-user-domain-name.md))
+
+* cannot be null
+
+* defined in: [remove-internal-domain input](remove-internal-domain-input-properties-user-domain-name.md "http://schema.nethserver.org/cluster/remove-internal-domain-input.json#/properties/domain")
+
+### domain Type
+
+`string` ([User domain name](remove-internal-domain-input-properties-user-domain-name.md))
+
+### domain Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/remove-internal-provider-input-properties-adminpass.md b/core/remove-internal-provider-input-properties-adminpass.md
new file mode 100644
index 000000000..78bd24b6f
--- /dev/null
+++ b/core/remove-internal-provider-input-properties-adminpass.md
@@ -0,0 +1,19 @@
+# Untitled string in remove-internal-provider input Schema
+
+```txt
+http://schema.nethserver.org/cluster/remove-internal-provider-input.json#/properties/adminpass
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [remove-internal-provider-input.json\*](cluster/remove-internal-provider-input.json "open original schema") |
+
+## adminpass Type
+
+`string`
+
+## adminpass Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/remove-internal-provider-input-properties-adminuser.md b/core/remove-internal-provider-input-properties-adminuser.md
new file mode 100644
index 000000000..fa28e8de0
--- /dev/null
+++ b/core/remove-internal-provider-input-properties-adminuser.md
@@ -0,0 +1,19 @@
+# Untitled string in remove-internal-provider input Schema
+
+```txt
+http://schema.nethserver.org/cluster/remove-internal-provider-input.json#/properties/adminuser
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [remove-internal-provider-input.json\*](cluster/remove-internal-provider-input.json "open original schema") |
+
+## adminuser Type
+
+`string`
+
+## adminuser Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/remove-internal-provider-input-properties-module-identifier.md b/core/remove-internal-provider-input-properties-module-identifier.md
new file mode 100644
index 000000000..8e20c1761
--- /dev/null
+++ b/core/remove-internal-provider-input-properties-module-identifier.md
@@ -0,0 +1,19 @@
+# Module identifier Schema
+
+```txt
+http://schema.nethserver.org/cluster/remove-internal-provider-input.json#/properties/module_id
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [remove-internal-provider-input.json\*](cluster/remove-internal-provider-input.json "open original schema") |
+
+## module\_id Type
+
+`string` ([Module identifier](remove-internal-provider-input-properties-module-identifier.md))
+
+## module\_id Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/remove-internal-provider-input.json b/core/remove-internal-provider-input.json
new file mode 100644
index 000000000..f54f5314e
--- /dev/null
+++ b/core/remove-internal-provider-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"remove-internal-provider input","$id":"http://schema.nethserver.org/cluster/remove-internal-provider-input.json","description":"Safely remove a user domain provider.","examples":[{"module_id":"openldap1"},{"module_id":"samba1","adminuser":"administrator","adminpass":"Nethesis,1234"}],"type":"object","required":["module_id"],"properties":{"module_id":{"title":"Module identifier","type":"string","minLength":1},"adminuser":{"type":"string","minLength":1},"adminpass":{"type":"string","minLength":1}}}
diff --git a/core/remove-internal-provider-input.md b/core/remove-internal-provider-input.md
new file mode 100644
index 000000000..6b6112e69
--- /dev/null
+++ b/core/remove-internal-provider-input.md
@@ -0,0 +1,105 @@
+# remove-internal-provider input Schema
+
+```txt
+http://schema.nethserver.org/cluster/remove-internal-provider-input.json
+```
+
+Safely remove a user domain provider.
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [remove-internal-provider-input.json](cluster/remove-internal-provider-input.json "open original schema") |
+
+## remove-internal-provider input Type
+
+`object` ([remove-internal-provider input](remove-internal-provider-input.md))
+
+## remove-internal-provider input Examples
+
+```json
+{
+ "module_id": "openldap1"
+}
+```
+
+```json
+{
+ "module_id": "samba1",
+ "adminuser": "administrator",
+ "adminpass": "Nethesis,1234"
+}
+```
+
+# remove-internal-provider input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :----------------------- | :------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| [module\_id](#module_id) | `string` | Required | cannot be null | [remove-internal-provider input](remove-internal-provider-input-properties-module-identifier.md "http://schema.nethserver.org/cluster/remove-internal-provider-input.json#/properties/module_id") |
+| [adminuser](#adminuser) | `string` | Optional | cannot be null | [remove-internal-provider input](remove-internal-provider-input-properties-adminuser.md "http://schema.nethserver.org/cluster/remove-internal-provider-input.json#/properties/adminuser") |
+| [adminpass](#adminpass) | `string` | Optional | cannot be null | [remove-internal-provider input](remove-internal-provider-input-properties-adminpass.md "http://schema.nethserver.org/cluster/remove-internal-provider-input.json#/properties/adminpass") |
+
+## module\_id
+
+
+
+`module_id`
+
+* is required
+
+* Type: `string` ([Module identifier](remove-internal-provider-input-properties-module-identifier.md))
+
+* cannot be null
+
+* defined in: [remove-internal-provider input](remove-internal-provider-input-properties-module-identifier.md "http://schema.nethserver.org/cluster/remove-internal-provider-input.json#/properties/module_id")
+
+### module\_id Type
+
+`string` ([Module identifier](remove-internal-provider-input-properties-module-identifier.md))
+
+### module\_id Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## adminuser
+
+
+
+`adminuser`
+
+* is optional
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [remove-internal-provider input](remove-internal-provider-input-properties-adminuser.md "http://schema.nethserver.org/cluster/remove-internal-provider-input.json#/properties/adminuser")
+
+### adminuser Type
+
+`string`
+
+### adminuser Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## adminpass
+
+
+
+`adminpass`
+
+* is optional
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [remove-internal-provider input](remove-internal-provider-input-properties-adminpass.md "http://schema.nethserver.org/cluster/remove-internal-provider-input.json#/properties/adminpass")
+
+### adminpass Type
+
+`string`
+
+### adminpass Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/remove-module-input-1-properties-force-removal-from-the-cluster-even-if-not-responding.md b/core/remove-module-input-1-properties-force-removal-from-the-cluster-even-if-not-responding.md
new file mode 100644
index 000000000..95000647b
--- /dev/null
+++ b/core/remove-module-input-1-properties-force-removal-from-the-cluster-even-if-not-responding.md
@@ -0,0 +1,15 @@
+# Force removal from the cluster even if not responding Schema
+
+```txt
+http://schema.nethserver.org/cluster/remove-module-input.json#/properties/force
+```
+
+The module instance is erased from Redis
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [remove-module-input.json\*](cluster/remove-module-input.json "open original schema") |
+
+## force Type
+
+`boolean` ([Force removal from the cluster even if not responding](remove-module-input-1-properties-force-removal-from-the-cluster-even-if-not-responding.md))
diff --git a/core/remove-module-input-1-properties-module-identifier.md b/core/remove-module-input-1-properties-module-identifier.md
new file mode 100644
index 000000000..00a6d4b95
--- /dev/null
+++ b/core/remove-module-input-1-properties-module-identifier.md
@@ -0,0 +1,25 @@
+# Module identifier Schema
+
+```txt
+http://schema.nethserver.org/cluster/remove-module-input.json#/properties/module_id
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [remove-module-input.json\*](cluster/remove-module-input.json "open original schema") |
+
+## module\_id Type
+
+`string` ([Module identifier](remove-module-input-1-properties-module-identifier.md))
+
+## module\_id Examples
+
+```json
+"dokuwiki1"
+```
+
+```json
+"nextcloud3"
+```
diff --git a/core/remove-module-input-1-properties-preserve-data-flag.md b/core/remove-module-input-1-properties-preserve-data-flag.md
new file mode 100644
index 000000000..8ed990547
--- /dev/null
+++ b/core/remove-module-input-1-properties-preserve-data-flag.md
@@ -0,0 +1,15 @@
+# Preserve data flag Schema
+
+```txt
+http://schema.nethserver.org/cluster/remove-module-input.json#/properties/preserve_data
+```
+
+If set to `false`, any module data on disk is erased
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [remove-module-input.json\*](cluster/remove-module-input.json "open original schema") |
+
+## preserve\_data Type
+
+`boolean` ([Preserve data flag](remove-module-input-1-properties-preserve-data-flag.md))
diff --git a/core/remove-module-input-1.md b/core/remove-module-input-1.md
new file mode 100644
index 000000000..6284121b4
--- /dev/null
+++ b/core/remove-module-input-1.md
@@ -0,0 +1,97 @@
+# remove-module input Schema
+
+```txt
+http://schema.nethserver.org/cluster/remove-module-input.json
+```
+
+Remove a module from the cluster, optionally erasing any disk data
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [remove-module-input.json](cluster/remove-module-input.json "open original schema") |
+
+## remove-module input Type
+
+`object` ([remove-module input](remove-module-input-1.md))
+
+## remove-module input Examples
+
+```json
+{
+ "module_id": "dokuwiki3",
+ "preserve_data": false,
+ "force": false
+}
+```
+
+# remove-module input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------------- | :-------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [module\_id](#module_id) | `string` | Required | cannot be null | [remove-module input](remove-module-input-1-properties-module-identifier.md "http://schema.nethserver.org/cluster/remove-module-input.json#/properties/module_id") |
+| [preserve\_data](#preserve_data) | `boolean` | Required | cannot be null | [remove-module input](remove-module-input-1-properties-preserve-data-flag.md "http://schema.nethserver.org/cluster/remove-module-input.json#/properties/preserve_data") |
+| [force](#force) | `boolean` | Optional | cannot be null | [remove-module input](remove-module-input-1-properties-force-removal-from-the-cluster-even-if-not-responding.md "http://schema.nethserver.org/cluster/remove-module-input.json#/properties/force") |
+
+## module\_id
+
+
+
+`module_id`
+
+* is required
+
+* Type: `string` ([Module identifier](remove-module-input-1-properties-module-identifier.md))
+
+* cannot be null
+
+* defined in: [remove-module input](remove-module-input-1-properties-module-identifier.md "http://schema.nethserver.org/cluster/remove-module-input.json#/properties/module_id")
+
+### module\_id Type
+
+`string` ([Module identifier](remove-module-input-1-properties-module-identifier.md))
+
+### module\_id Examples
+
+```json
+"dokuwiki1"
+```
+
+```json
+"nextcloud3"
+```
+
+## preserve\_data
+
+If set to `false`, any module data on disk is erased
+
+`preserve_data`
+
+* is required
+
+* Type: `boolean` ([Preserve data flag](remove-module-input-1-properties-preserve-data-flag.md))
+
+* cannot be null
+
+* defined in: [remove-module input](remove-module-input-1-properties-preserve-data-flag.md "http://schema.nethserver.org/cluster/remove-module-input.json#/properties/preserve_data")
+
+### preserve\_data Type
+
+`boolean` ([Preserve data flag](remove-module-input-1-properties-preserve-data-flag.md))
+
+## force
+
+The module instance is erased from Redis
+
+`force`
+
+* is optional
+
+* Type: `boolean` ([Force removal from the cluster even if not responding](remove-module-input-1-properties-force-removal-from-the-cluster-even-if-not-responding.md))
+
+* cannot be null
+
+* defined in: [remove-module input](remove-module-input-1-properties-force-removal-from-the-cluster-even-if-not-responding.md "http://schema.nethserver.org/cluster/remove-module-input.json#/properties/force")
+
+### force Type
+
+`boolean` ([Force removal from the cluster even if not responding](remove-module-input-1-properties-force-removal-from-the-cluster-even-if-not-responding.md))
diff --git a/core/remove-module-input-properties-module-identifier.md b/core/remove-module-input-properties-module-identifier.md
new file mode 100644
index 000000000..c3c959f9b
--- /dev/null
+++ b/core/remove-module-input-properties-module-identifier.md
@@ -0,0 +1,25 @@
+# Module identifier Schema
+
+```txt
+http://schema.nethserver.org/node/remove-module-input.json#/properties/module_id
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [remove-module-input.json\*](node/remove-module-input.json "open original schema") |
+
+## module\_id Type
+
+`string` ([Module identifier](remove-module-input-properties-module-identifier.md))
+
+## module\_id Examples
+
+```json
+"dokuwiki1"
+```
+
+```json
+"nextcloud3"
+```
diff --git a/core/remove-module-input-properties-preserve-data-flag.md b/core/remove-module-input-properties-preserve-data-flag.md
new file mode 100644
index 000000000..a4cee7ba0
--- /dev/null
+++ b/core/remove-module-input-properties-preserve-data-flag.md
@@ -0,0 +1,15 @@
+# Preserve data flag Schema
+
+```txt
+http://schema.nethserver.org/node/remove-module-input.json#/properties/preserve_data
+```
+
+If set to `false`, any module data on disk is erased
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [remove-module-input.json\*](node/remove-module-input.json "open original schema") |
+
+## preserve\_data Type
+
+`boolean` ([Preserve data flag](remove-module-input-properties-preserve-data-flag.md))
diff --git a/core/remove-module-input.json b/core/remove-module-input.json
new file mode 100644
index 000000000..bd689fcfa
--- /dev/null
+++ b/core/remove-module-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"remove-module input","$id":"http://schema.nethserver.org/cluster/remove-module-input.json","description":"Remove a module from the cluster, optionally erasing any disk data","examples":[{"module_id":"dokuwiki3","preserve_data":false,"force":false}],"type":"object","required":["module_id","preserve_data"],"properties":{"module_id":{"title":"Module identifier","type":"string","examples":["dokuwiki1","nextcloud3"]},"preserve_data":{"type":"boolean","title":"Preserve data flag","description":"If set to `false`, any module data on disk is erased"},"force":{"type":"boolean","title":"Force removal from the cluster even if not responding","description":"The module instance is erased from Redis"}}}
diff --git a/core/remove-module-input.md b/core/remove-module-input.md
new file mode 100644
index 000000000..c93a17b4e
--- /dev/null
+++ b/core/remove-module-input.md
@@ -0,0 +1,77 @@
+# remove-module input Schema
+
+```txt
+http://schema.nethserver.org/node/remove-module-input.json
+```
+
+Remove a module from the running node, optionally erasing any disk data
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [remove-module-input.json](node/remove-module-input.json "open original schema") |
+
+## remove-module input Type
+
+`object` ([remove-module input](remove-module-input.md))
+
+## remove-module input Examples
+
+```json
+{
+ "module_id": "dokuwiki1",
+ "preserve_data": false
+}
+```
+
+# remove-module input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------------- | :-------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [module\_id](#module_id) | `string` | Required | cannot be null | [remove-module input](remove-module-input-properties-module-identifier.md "http://schema.nethserver.org/node/remove-module-input.json#/properties/module_id") |
+| [preserve\_data](#preserve_data) | `boolean` | Required | cannot be null | [remove-module input](remove-module-input-properties-preserve-data-flag.md "http://schema.nethserver.org/node/remove-module-input.json#/properties/preserve_data") |
+
+## module\_id
+
+
+
+`module_id`
+
+* is required
+
+* Type: `string` ([Module identifier](remove-module-input-properties-module-identifier.md))
+
+* cannot be null
+
+* defined in: [remove-module input](remove-module-input-properties-module-identifier.md "http://schema.nethserver.org/node/remove-module-input.json#/properties/module_id")
+
+### module\_id Type
+
+`string` ([Module identifier](remove-module-input-properties-module-identifier.md))
+
+### module\_id Examples
+
+```json
+"dokuwiki1"
+```
+
+```json
+"nextcloud3"
+```
+
+## preserve\_data
+
+If set to `false`, any module data on disk is erased
+
+`preserve_data`
+
+* is required
+
+* Type: `boolean` ([Preserve data flag](remove-module-input-properties-preserve-data-flag.md))
+
+* cannot be null
+
+* defined in: [remove-module input](remove-module-input-properties-preserve-data-flag.md "http://schema.nethserver.org/node/remove-module-input.json#/properties/preserve_data")
+
+### preserve\_data Type
+
+`boolean` ([Preserve data flag](remove-module-input-properties-preserve-data-flag.md))
diff --git a/core/remove-module-output-1.md b/core/remove-module-output-1.md
new file mode 100644
index 000000000..bf44ddcaa
--- /dev/null
+++ b/core/remove-module-output-1.md
@@ -0,0 +1,26 @@
+# remove-module output Schema
+
+```txt
+http://schema.nethserver.org/cluster/remove-module-output.json
+```
+
+Just an empty object, representing a successful response
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [remove-module-output.json](cluster/remove-module-output.json "open original schema") |
+
+## remove-module output Type
+
+`object` ([remove-module output](remove-module-output-1.md))
+
+## remove-module output Examples
+
+```json
+{}
+```
+
+# remove-module output Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------- | :--- | :------- | :------- | :--------- |
diff --git a/core/remove-module-output.json b/core/remove-module-output.json
new file mode 100644
index 000000000..1494d1240
--- /dev/null
+++ b/core/remove-module-output.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"remove-module output","$id":"http://schema.nethserver.org/cluster/remove-module-output.json","description":"Just an empty object, representing a successful response","examples":[{}],"type":"object","properties":{}}
diff --git a/core/remove-module-output.md b/core/remove-module-output.md
new file mode 100644
index 000000000..7e6b6fa87
--- /dev/null
+++ b/core/remove-module-output.md
@@ -0,0 +1,26 @@
+# remove-module output Schema
+
+```txt
+http://schema.nethserver.org/node/remove-module-output.json
+```
+
+Just an empty object, representing a successful response
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [remove-module-output.json](node/remove-module-output.json "open original schema") |
+
+## remove-module output Type
+
+`object` ([remove-module output](remove-module-output.md))
+
+## remove-module output Examples
+
+```json
+{}
+```
+
+# remove-module output Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------- | :--- | :------- | :------- | :--------- |
diff --git a/core/remove-node-input-properties-node-identifier.md b/core/remove-node-input-properties-node-identifier.md
new file mode 100644
index 000000000..0719c2849
--- /dev/null
+++ b/core/remove-node-input-properties-node-identifier.md
@@ -0,0 +1,19 @@
+# Node identifier Schema
+
+```txt
+http://schema.nethserver.org/cluster/remove-node-input.json#/properties/node_id
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [remove-node-input.json\*](cluster/remove-node-input.json "open original schema") |
+
+## node\_id Type
+
+`integer` ([Node identifier](remove-node-input-properties-node-identifier.md))
+
+## node\_id Constraints
+
+**minimum**: the value of this number must greater than or equal to: `1`
diff --git a/core/remove-node-input.json b/core/remove-node-input.json
new file mode 100644
index 000000000..3f2d97302
--- /dev/null
+++ b/core/remove-node-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"remove-node input","$id":"http://schema.nethserver.org/cluster/remove-node-input.json","description":"Remove a node from the cluster","examples":[{"node_id":3}],"type":"object","required":["node_id"],"properties":{"node_id":{"title":"Node identifier","type":"integer","minimum":1}}}
diff --git a/core/remove-node-input.md b/core/remove-node-input.md
new file mode 100644
index 000000000..c779f1ebf
--- /dev/null
+++ b/core/remove-node-input.md
@@ -0,0 +1,51 @@
+# remove-node input Schema
+
+```txt
+http://schema.nethserver.org/cluster/remove-node-input.json
+```
+
+Remove a node from the cluster
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [remove-node-input.json](cluster/remove-node-input.json "open original schema") |
+
+## remove-node input Type
+
+`object` ([remove-node input](remove-node-input.md))
+
+## remove-node input Examples
+
+```json
+{
+ "node_id": 3
+}
+```
+
+# remove-node input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------- | :-------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [node\_id](#node_id) | `integer` | Required | cannot be null | [remove-node input](remove-node-input-properties-node-identifier.md "http://schema.nethserver.org/cluster/remove-node-input.json#/properties/node_id") |
+
+## node\_id
+
+
+
+`node_id`
+
+* is required
+
+* Type: `integer` ([Node identifier](remove-node-input-properties-node-identifier.md))
+
+* cannot be null
+
+* defined in: [remove-node input](remove-node-input-properties-node-identifier.md "http://schema.nethserver.org/cluster/remove-node-input.json#/properties/node_id")
+
+### node\_id Type
+
+`integer` ([Node identifier](remove-node-input-properties-node-identifier.md))
+
+### node\_id Constraints
+
+**minimum**: the value of this number must greater than or equal to: `1`
diff --git a/core/remove-public-service-input-properties-service-name.md b/core/remove-public-service-input-properties-service-name.md
new file mode 100644
index 000000000..8442db563
--- /dev/null
+++ b/core/remove-public-service-input-properties-service-name.md
@@ -0,0 +1,19 @@
+# Service name Schema
+
+```txt
+http://schema.nethserver.org/node/remove-public-service-input.json#/properties/service
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [remove-public-service-input.json\*](node/remove-public-service-input.json "open original schema") |
+
+## service Type
+
+`string` ([Service name](remove-public-service-input-properties-service-name.md))
+
+## service Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/remove-public-service-input.json b/core/remove-public-service-input.json
new file mode 100644
index 000000000..31bb3f132
--- /dev/null
+++ b/core/remove-public-service-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"remove-public-service input","$id":"http://schema.nethserver.org/node/remove-public-service-input.json","description":"Remove firewall configuration for the given public service","examples":[{"service":"smtp"}],"type":"object","required":["service"],"properties":{"service":{"type":"string","title":"Service name","minLength":1}}}
diff --git a/core/remove-public-service-input.md b/core/remove-public-service-input.md
new file mode 100644
index 000000000..cc96693fd
--- /dev/null
+++ b/core/remove-public-service-input.md
@@ -0,0 +1,51 @@
+# remove-public-service input Schema
+
+```txt
+http://schema.nethserver.org/node/remove-public-service-input.json
+```
+
+Remove firewall configuration for the given public service
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :----------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [remove-public-service-input.json](node/remove-public-service-input.json "open original schema") |
+
+## remove-public-service input Type
+
+`object` ([remove-public-service input](remove-public-service-input.md))
+
+## remove-public-service input Examples
+
+```json
+{
+ "service": "smtp"
+}
+```
+
+# remove-public-service input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------ | :------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [service](#service) | `string` | Required | cannot be null | [remove-public-service input](remove-public-service-input-properties-service-name.md "http://schema.nethserver.org/node/remove-public-service-input.json#/properties/service") |
+
+## service
+
+
+
+`service`
+
+* is required
+
+* Type: `string` ([Service name](remove-public-service-input-properties-service-name.md))
+
+* cannot be null
+
+* defined in: [remove-public-service input](remove-public-service-input-properties-service-name.md "http://schema.nethserver.org/node/remove-public-service-input.json#/properties/service")
+
+### service Type
+
+`string` ([Service name](remove-public-service-input-properties-service-name.md))
+
+### service Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/remove-repository-input-properties-name.md b/core/remove-repository-input-properties-name.md
new file mode 100644
index 000000000..bed497a50
--- /dev/null
+++ b/core/remove-repository-input-properties-name.md
@@ -0,0 +1,15 @@
+# Untitled string in remove-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/remove-repository-input.json#/properties/name
+```
+
+Repository name
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [remove-repository-input.json\*](cluster/remove-repository-input.json "open original schema") |
+
+## name Type
+
+`string`
diff --git a/core/remove-repository-input.json b/core/remove-repository-input.json
new file mode 100644
index 000000000..4aca3b3aa
--- /dev/null
+++ b/core/remove-repository-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"remove-repository input","$id":"http://schema.nethserver.org/cluster/remove-repository-input.json","description":"Input schema of the remove-repository action","examples":[{"name":"repository1"}],"type":"object","properties":{"name":{"description":"Repository name","type":"string"}},"required":["name"]}
diff --git a/core/remove-repository-input.md b/core/remove-repository-input.md
new file mode 100644
index 000000000..dca467aec
--- /dev/null
+++ b/core/remove-repository-input.md
@@ -0,0 +1,47 @@
+# remove-repository input Schema
+
+```txt
+http://schema.nethserver.org/cluster/remove-repository-input.json
+```
+
+Input schema of the remove-repository action
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [remove-repository-input.json](cluster/remove-repository-input.json "open original schema") |
+
+## remove-repository input Type
+
+`object` ([remove-repository input](remove-repository-input.md))
+
+## remove-repository input Examples
+
+```json
+{
+ "name": "repository1"
+}
+```
+
+# remove-repository input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------ | :------- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [name](#name) | `string` | Required | cannot be null | [remove-repository input](remove-repository-input-properties-name.md "http://schema.nethserver.org/cluster/remove-repository-input.json#/properties/name") |
+
+## name
+
+Repository name
+
+`name`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [remove-repository input](remove-repository-input-properties-name.md "http://schema.nethserver.org/cluster/remove-repository-input.json#/properties/name")
+
+### name Type
+
+`string`
diff --git a/core/remove-repository-output.json b/core/remove-repository-output.json
new file mode 100644
index 000000000..e176ff7fd
--- /dev/null
+++ b/core/remove-repository-output.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"remove-repository output","$id":"http://schema.nethserver.org/cluster/remove-repository-output.json","description":"Output schema of the remove-repository action","examples":[true],"type":"boolean"}
diff --git a/core/remove-repository-output.md b/core/remove-repository-output.md
new file mode 100644
index 000000000..6cefe00aa
--- /dev/null
+++ b/core/remove-repository-output.md
@@ -0,0 +1,21 @@
+# remove-repository output Schema
+
+```txt
+http://schema.nethserver.org/cluster/remove-repository-output.json
+```
+
+Output schema of the remove-repository action
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [remove-repository-output.json](cluster/remove-repository-output.json "open original schema") |
+
+## remove-repository output Type
+
+`boolean` ([remove-repository output](remove-repository-output.md))
+
+## remove-repository output Examples
+
+```json
+true
+```
diff --git a/core/remove-tun-input-properties-tun-name.md b/core/remove-tun-input-properties-tun-name.md
new file mode 100644
index 000000000..ec54ff64e
--- /dev/null
+++ b/core/remove-tun-input-properties-tun-name.md
@@ -0,0 +1,19 @@
+# TUN name Schema
+
+```txt
+http://schema.nethserver.org/node/remove-tun-input.json#/properties/tun
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [remove-tun-input.json\*](node/remove-tun-input.json "open original schema") |
+
+## tun Type
+
+`string` ([TUN name](remove-tun-input-properties-tun-name.md))
+
+## tun Constraints
+
+**minimum length**: the minimum number of characters for this string is: `4`
diff --git a/core/remove-tun-input.json b/core/remove-tun-input.json
new file mode 100644
index 000000000..07a648692
--- /dev/null
+++ b/core/remove-tun-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"remove-tun input","$id":"http://schema.nethserver.org/node/remove-tun-input.json","description":"Remove a tun interface","examples":[{"tun":"tun0"}],"type":"object","required":["tun"],"properties":{"tun":{"type":"string","title":"TUN name","minLength":4}}}
diff --git a/core/remove-tun-input.md b/core/remove-tun-input.md
new file mode 100644
index 000000000..2fdcbe36f
--- /dev/null
+++ b/core/remove-tun-input.md
@@ -0,0 +1,51 @@
+# remove-tun input Schema
+
+```txt
+http://schema.nethserver.org/node/remove-tun-input.json
+```
+
+Remove a tun interface
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [remove-tun-input.json](node/remove-tun-input.json "open original schema") |
+
+## remove-tun input Type
+
+`object` ([remove-tun input](remove-tun-input.md))
+
+## remove-tun input Examples
+
+```json
+{
+ "tun": "tun0"
+}
+```
+
+# remove-tun input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :---------- | :------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------ |
+| [tun](#tun) | `string` | Required | cannot be null | [remove-tun input](remove-tun-input-properties-tun-name.md "http://schema.nethserver.org/node/remove-tun-input.json#/properties/tun") |
+
+## tun
+
+
+
+`tun`
+
+* is required
+
+* Type: `string` ([TUN name](remove-tun-input-properties-tun-name.md))
+
+* cannot be null
+
+* defined in: [remove-tun input](remove-tun-input-properties-tun-name.md "http://schema.nethserver.org/node/remove-tun-input.json#/properties/tun")
+
+### tun Type
+
+`string` ([TUN name](remove-tun-input-properties-tun-name.md))
+
+### tun Constraints
+
+**minimum length**: the minimum number of characters for this string is: `4`
diff --git a/core/remove-user-input.json b/core/remove-user-input.json
new file mode 100644
index 000000000..628dcf33a
--- /dev/null
+++ b/core/remove-user-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"remove-user input","$id":"http://schema.nethserver.org/cluster/remove-user-input.json","description":"Remove a module from the cluster, optionally erasing any disk data","examples":[{"user":"jdoe"}],"type":"object","required":["user"],"properties":{"user":{"$ref":"http://schema.nethserver.org/cluster.json#/definitions/strict-username-string"}}}
diff --git a/core/remove-user-input.md b/core/remove-user-input.md
new file mode 100644
index 000000000..4e9c50c4b
--- /dev/null
+++ b/core/remove-user-input.md
@@ -0,0 +1,83 @@
+# remove-user input Schema
+
+```txt
+http://schema.nethserver.org/cluster/remove-user-input.json
+```
+
+Remove a module from the cluster, optionally erasing any disk data
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [remove-user-input.json](cluster/remove-user-input.json "open original schema") |
+
+## remove-user input Type
+
+`object` ([remove-user input](remove-user-input.md))
+
+## remove-user input Examples
+
+```json
+{
+ "user": "jdoe"
+}
+```
+
+# remove-user input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------ | :------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------ |
+| [user](#user) | `string` | Required | cannot be null | [remove-user input](cluster-definitions-strict-username-format.md "http://schema.nethserver.org/cluster/remove-user-input.json#/properties/user") |
+
+## user
+
+A username string can be written in many ways. This is a quite strict form. See
+
+`user`
+
+* is required
+
+* Type: `string` ([Strict username format](cluster-definitions-strict-username-format.md))
+
+* cannot be null
+
+* defined in: [remove-user input](cluster-definitions-strict-username-format.md "http://schema.nethserver.org/cluster/remove-user-input.json#/properties/user")
+
+### user Type
+
+`string` ([Strict username format](cluster-definitions-strict-username-format.md))
+
+### user Constraints
+
+**maximum length**: the maximum number of characters for this string is: `32`
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+**pattern**: the string must match the following regular expression:
+
+```regexp
+^[a-z_][a-z0-9_-]*[$]?$
+```
+
+[try pattern](https://regexr.com/?expression=%5E%5Ba-z_%5D%5Ba-z0-9_-%5D*%5B%24%5D%3F%24 "try regular expression with regexr.com")
+
+### user Examples
+
+```json
+"admin"
+```
+
+```json
+"u0000"
+```
+
+```json
+"worker$"
+```
+
+```json
+"test-user"
+```
+
+```json
+"test_user"
+```
diff --git a/core/remove-user-output.json b/core/remove-user-output.json
new file mode 100644
index 000000000..1f9c73015
--- /dev/null
+++ b/core/remove-user-output.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"remove-user output","$id":"http://schema.nethserver.org/cluster/remove-user-output.json","description":"No interesting information is returned. Just a success response.","examples":[true],"type":"boolean"}
diff --git a/core/remove-user-output.md b/core/remove-user-output.md
new file mode 100644
index 000000000..7e1505133
--- /dev/null
+++ b/core/remove-user-output.md
@@ -0,0 +1,21 @@
+# remove-user output Schema
+
+```txt
+http://schema.nethserver.org/cluster/remove-user-output.json
+```
+
+No interesting information is returned. Just a success response.
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [remove-user-output.json](cluster/remove-user-output.json "open original schema") |
+
+## remove-user output Type
+
+`boolean` ([remove-user output](remove-user-output.md))
+
+## remove-user output Examples
+
+```json
+true
+```
diff --git a/core/restore-module-input-1-properties-backup-path.md b/core/restore-module-input-1-properties-backup-path.md
new file mode 100644
index 000000000..7e8b074ab
--- /dev/null
+++ b/core/restore-module-input-1-properties-backup-path.md
@@ -0,0 +1,19 @@
+# Backup path Schema
+
+```txt
+http://schema.nethserver.org/cluster/restore-module-input.json#/properties/path
+```
+
+Path of the backup in the source repository
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [restore-module-input.json\*](cluster/restore-module-input.json "open original schema") |
+
+## path Type
+
+`string` ([Backup path](restore-module-input-1-properties-backup-path.md))
+
+## path Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/restore-module-input-1-properties-node-id.md b/core/restore-module-input-1-properties-node-id.md
new file mode 100644
index 000000000..da4285adb
--- /dev/null
+++ b/core/restore-module-input-1-properties-node-id.md
@@ -0,0 +1,19 @@
+# Node ID Schema
+
+```txt
+http://schema.nethserver.org/cluster/restore-module-input.json#/properties/node
+```
+
+Node identifier where the module has to be restored
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [restore-module-input.json\*](cluster/restore-module-input.json "open original schema") |
+
+## node Type
+
+`integer` ([Node ID](restore-module-input-1-properties-node-id.md))
+
+## node Constraints
+
+**minimum**: the value of this number must greater than or equal to: `1`
diff --git a/core/restore-module-input-1-properties-replace-flag.md b/core/restore-module-input-1-properties-replace-flag.md
new file mode 100644
index 000000000..20f276fd7
--- /dev/null
+++ b/core/restore-module-input-1-properties-replace-flag.md
@@ -0,0 +1,15 @@
+# Replace flag Schema
+
+```txt
+http://schema.nethserver.org/cluster/restore-module-input.json#/properties/replace
+```
+
+If set to true, remove any existing instance with the same UUID, then restore the UUID to the new module
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [restore-module-input.json\*](cluster/restore-module-input.json "open original schema") |
+
+## replace Type
+
+`boolean` ([Replace flag](restore-module-input-1-properties-replace-flag.md))
diff --git a/core/restore-module-input-1-properties-repository-id.md b/core/restore-module-input-1-properties-repository-id.md
new file mode 100644
index 000000000..e2164285c
--- /dev/null
+++ b/core/restore-module-input-1-properties-repository-id.md
@@ -0,0 +1,19 @@
+# Repository ID Schema
+
+```txt
+http://schema.nethserver.org/cluster/restore-module-input.json#/properties/repository
+```
+
+Backup source repository
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [restore-module-input.json\*](cluster/restore-module-input.json "open original schema") |
+
+## repository Type
+
+`string` ([Repository ID](restore-module-input-1-properties-repository-id.md))
+
+## repository Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/restore-module-input-1-properties-snapshot-id.md b/core/restore-module-input-1-properties-snapshot-id.md
new file mode 100644
index 000000000..4ffdb6ddc
--- /dev/null
+++ b/core/restore-module-input-1-properties-snapshot-id.md
@@ -0,0 +1,15 @@
+# Snapshot ID Schema
+
+```txt
+http://schema.nethserver.org/cluster/restore-module-input.json#/properties/snapshot
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [restore-module-input.json\*](cluster/restore-module-input.json "open original schema") |
+
+## snapshot Type
+
+`string` ([Snapshot ID](restore-module-input-1-properties-snapshot-id.md))
diff --git a/core/restore-module-input-1.md b/core/restore-module-input-1.md
new file mode 100644
index 000000000..bb3cb2ade
--- /dev/null
+++ b/core/restore-module-input-1.md
@@ -0,0 +1,139 @@
+# restore-module input Schema
+
+```txt
+http://schema.nethserver.org/cluster/restore-module-input.json
+```
+
+Input schema of the restore-module action
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [restore-module-input.json](cluster/restore-module-input.json "open original schema") |
+
+## restore-module input Type
+
+`object` ([restore-module input](restore-module-input-1.md))
+
+## restore-module input Examples
+
+```json
+{
+ "repository": "48ce000a-79b7-5fe6-8558-177fd70c27b4",
+ "path": "dokuwiki/dokuwiki1@f5d24fcd-819c-4b1d-98ad-a1b2ebcee8cf",
+ "snapshot": "",
+ "node": 1,
+ "replace": false
+}
+```
+
+# restore-module input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------ | :-------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [repository](#repository) | `string` | Required | cannot be null | [restore-module input](restore-module-input-1-properties-repository-id.md "http://schema.nethserver.org/cluster/restore-module-input.json#/properties/repository") |
+| [path](#path) | `string` | Required | cannot be null | [restore-module input](restore-module-input-1-properties-backup-path.md "http://schema.nethserver.org/cluster/restore-module-input.json#/properties/path") |
+| [snapshot](#snapshot) | `string` | Required | cannot be null | [restore-module input](restore-module-input-1-properties-snapshot-id.md "http://schema.nethserver.org/cluster/restore-module-input.json#/properties/snapshot") |
+| [node](#node) | `integer` | Required | cannot be null | [restore-module input](restore-module-input-1-properties-node-id.md "http://schema.nethserver.org/cluster/restore-module-input.json#/properties/node") |
+| [replace](#replace) | `boolean` | Optional | cannot be null | [restore-module input](restore-module-input-1-properties-replace-flag.md "http://schema.nethserver.org/cluster/restore-module-input.json#/properties/replace") |
+
+## repository
+
+Backup source repository
+
+`repository`
+
+* is required
+
+* Type: `string` ([Repository ID](restore-module-input-1-properties-repository-id.md))
+
+* cannot be null
+
+* defined in: [restore-module input](restore-module-input-1-properties-repository-id.md "http://schema.nethserver.org/cluster/restore-module-input.json#/properties/repository")
+
+### repository Type
+
+`string` ([Repository ID](restore-module-input-1-properties-repository-id.md))
+
+### repository Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## path
+
+Path of the backup in the source repository
+
+`path`
+
+* is required
+
+* Type: `string` ([Backup path](restore-module-input-1-properties-backup-path.md))
+
+* cannot be null
+
+* defined in: [restore-module input](restore-module-input-1-properties-backup-path.md "http://schema.nethserver.org/cluster/restore-module-input.json#/properties/path")
+
+### path Type
+
+`string` ([Backup path](restore-module-input-1-properties-backup-path.md))
+
+### path Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## snapshot
+
+
+
+`snapshot`
+
+* is required
+
+* Type: `string` ([Snapshot ID](restore-module-input-1-properties-snapshot-id.md))
+
+* cannot be null
+
+* defined in: [restore-module input](restore-module-input-1-properties-snapshot-id.md "http://schema.nethserver.org/cluster/restore-module-input.json#/properties/snapshot")
+
+### snapshot Type
+
+`string` ([Snapshot ID](restore-module-input-1-properties-snapshot-id.md))
+
+## node
+
+Node identifier where the module has to be restored
+
+`node`
+
+* is required
+
+* Type: `integer` ([Node ID](restore-module-input-1-properties-node-id.md))
+
+* cannot be null
+
+* defined in: [restore-module input](restore-module-input-1-properties-node-id.md "http://schema.nethserver.org/cluster/restore-module-input.json#/properties/node")
+
+### node Type
+
+`integer` ([Node ID](restore-module-input-1-properties-node-id.md))
+
+### node Constraints
+
+**minimum**: the value of this number must greater than or equal to: `1`
+
+## replace
+
+If set to true, remove any existing instance with the same UUID, then restore the UUID to the new module
+
+`replace`
+
+* is optional
+
+* Type: `boolean` ([Replace flag](restore-module-input-1-properties-replace-flag.md))
+
+* cannot be null
+
+* defined in: [restore-module input](restore-module-input-1-properties-replace-flag.md "http://schema.nethserver.org/cluster/restore-module-input.json#/properties/replace")
+
+### replace Type
+
+`boolean` ([Replace flag](restore-module-input-1-properties-replace-flag.md))
diff --git a/core/restore-module-input-properties-backup-path.md b/core/restore-module-input-properties-backup-path.md
new file mode 100644
index 000000000..c59e2bc43
--- /dev/null
+++ b/core/restore-module-input-properties-backup-path.md
@@ -0,0 +1,19 @@
+# Backup path Schema
+
+```txt
+http://schema.nethserver.org/module/restore-module-input.json#/properties/path
+```
+
+Path of the backup in the source repository
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [restore-module-input.json\*](module/restore-module-input.json "open original schema") |
+
+## path Type
+
+`string` ([Backup path](restore-module-input-properties-backup-path.md))
+
+## path Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/restore-module-input-properties-environment-backup-patternproperties-.md b/core/restore-module-input-properties-environment-backup-patternproperties-.md
new file mode 100644
index 000000000..7350ccdf2
--- /dev/null
+++ b/core/restore-module-input-properties-environment-backup-patternproperties-.md
@@ -0,0 +1,15 @@
+# Untitled string in restore-module input Schema
+
+```txt
+http://schema.nethserver.org/module/restore-module-input.json#/properties/environment/patternProperties/^[^=]+$
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [restore-module-input.json\*](module/restore-module-input.json "open original schema") |
+
+## ^\[^=]+$ Type
+
+`string`
diff --git a/core/restore-module-input-properties-environment-backup-patternproperties.md b/core/restore-module-input-properties-environment-backup-patternproperties.md
new file mode 100644
index 000000000..b33a00dc5
--- /dev/null
+++ b/core/restore-module-input-properties-environment-backup-patternproperties.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in restore-module input Schema
+
+```txt
+http://schema.nethserver.org/module/restore-module-input.json#/properties/environment/patternProperties
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [restore-module-input.json\*](module/restore-module-input.json "open original schema") |
+
+## patternProperties Type
+
+unknown
diff --git a/core/restore-module-input-properties-environment-backup-properties-image_url.md b/core/restore-module-input-properties-environment-backup-properties-image_url.md
new file mode 100644
index 000000000..670bb2549
--- /dev/null
+++ b/core/restore-module-input-properties-environment-backup-properties-image_url.md
@@ -0,0 +1,25 @@
+# Untitled string in restore-module input Schema
+
+```txt
+http://schema.nethserver.org/module/restore-module-input.json#/properties/environment/properties/IMAGE_URL
+```
+
+URL of the module root image
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [restore-module-input.json\*](module/restore-module-input.json "open original schema") |
+
+## IMAGE\_URL Type
+
+`string`
+
+## IMAGE\_URL Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## IMAGE\_URL Examples
+
+```json
+"ghcr.io/nethserver/mymodule:v2.3.2"
+```
diff --git a/core/restore-module-input-properties-environment-backup.md b/core/restore-module-input-properties-environment-backup.md
new file mode 100644
index 000000000..40f52c67c
--- /dev/null
+++ b/core/restore-module-input-properties-environment-backup.md
@@ -0,0 +1,68 @@
+# Environment backup Schema
+
+```txt
+http://schema.nethserver.org/module/restore-module-input.json#/properties/environment
+```
+
+Environment restored from the given backup
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Forbidden | none | [restore-module-input.json\*](module/restore-module-input.json "open original schema") |
+
+## environment Type
+
+`object` ([Environment backup](restore-module-input-properties-environment-backup.md))
+
+# environment Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :----------------------- | :------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| [IMAGE\_URL](#image_url) | `string` | Optional | cannot be null | [restore-module input](restore-module-input-properties-environment-backup-properties-image_url.md "http://schema.nethserver.org/module/restore-module-input.json#/properties/environment/properties/IMAGE_URL") |
+| `^[^=]+$` | `string` | Optional | cannot be null | [restore-module input](restore-module-input-properties-environment-backup-patternproperties-.md "http://schema.nethserver.org/module/restore-module-input.json#/properties/environment/patternProperties/^\[^=]+$") |
+
+## IMAGE\_URL
+
+URL of the module root image
+
+`IMAGE_URL`
+
+* is optional
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [restore-module input](restore-module-input-properties-environment-backup-properties-image_url.md "http://schema.nethserver.org/module/restore-module-input.json#/properties/environment/properties/IMAGE_URL")
+
+### IMAGE\_URL Type
+
+`string`
+
+### IMAGE\_URL Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+### IMAGE\_URL Examples
+
+```json
+"ghcr.io/nethserver/mymodule:v2.3.2"
+```
+
+## Pattern: `^[^=]+$`
+
+
+
+`^[^=]+$`
+
+* is optional
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [restore-module input](restore-module-input-properties-environment-backup-patternproperties-.md "http://schema.nethserver.org/module/restore-module-input.json#/properties/environment/patternProperties/^\[^=]+$")
+
+### ^\[^=]+$ Type
+
+`string`
diff --git a/core/restore-module-input-properties-replace-flag.md b/core/restore-module-input-properties-replace-flag.md
new file mode 100644
index 000000000..599e2557b
--- /dev/null
+++ b/core/restore-module-input-properties-replace-flag.md
@@ -0,0 +1,15 @@
+# Replace flag Schema
+
+```txt
+http://schema.nethserver.org/module/restore-module-input.json#/properties/replace
+```
+
+If set to true restore old UUID from 'environment' field
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [restore-module-input.json\*](module/restore-module-input.json "open original schema") |
+
+## replace Type
+
+`boolean` ([Replace flag](restore-module-input-properties-replace-flag.md))
diff --git a/core/restore-module-input-properties-repository-id.md b/core/restore-module-input-properties-repository-id.md
new file mode 100644
index 000000000..52dc63029
--- /dev/null
+++ b/core/restore-module-input-properties-repository-id.md
@@ -0,0 +1,19 @@
+# Repository ID Schema
+
+```txt
+http://schema.nethserver.org/module/restore-module-input.json#/properties/repository
+```
+
+Backup source repository
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [restore-module-input.json\*](module/restore-module-input.json "open original schema") |
+
+## repository Type
+
+`string` ([Repository ID](restore-module-input-properties-repository-id.md))
+
+## repository Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/restore-module-input-properties-snapshot-id.md b/core/restore-module-input-properties-snapshot-id.md
new file mode 100644
index 000000000..28ccb7d9d
--- /dev/null
+++ b/core/restore-module-input-properties-snapshot-id.md
@@ -0,0 +1,15 @@
+# Snapshot ID Schema
+
+```txt
+http://schema.nethserver.org/module/restore-module-input.json#/properties/snapshot
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [restore-module-input.json\*](module/restore-module-input.json "open original schema") |
+
+## snapshot Type
+
+`string` ([Snapshot ID](restore-module-input-properties-snapshot-id.md))
diff --git a/core/restore-module-input.json b/core/restore-module-input.json
new file mode 100644
index 000000000..5d404f0e5
--- /dev/null
+++ b/core/restore-module-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"restore-module input","$id":"http://schema.nethserver.org/cluster/restore-module-input.json","description":"Input schema of the restore-module action","examples":[{"repository":"48ce000a-79b7-5fe6-8558-177fd70c27b4","path":"dokuwiki/dokuwiki1@f5d24fcd-819c-4b1d-98ad-a1b2ebcee8cf","snapshot":"","node":1,"replace":false}],"type":"object","required":["repository","path","snapshot","node"],"properties":{"repository":{"title":"Repository ID","description":"Backup source repository","type":"string","minLength":1},"path":{"title":"Backup path","description":"Path of the backup in the source repository","type":"string","minLength":1},"snapshot":{"title":"Snapshot ID","type":"string"},"node":{"title":"Node ID","description":"Node identifier where the module has to be restored","type":"integer","minimum":1},"replace":{"title":"Replace flag","description":"If set to true, remove any existing instance with the same UUID, then restore the UUID to the new module","type":"boolean"}}}
diff --git a/core/restore-module-input.md b/core/restore-module-input.md
new file mode 100644
index 000000000..9572087fb
--- /dev/null
+++ b/core/restore-module-input.md
@@ -0,0 +1,149 @@
+# restore-module input Schema
+
+```txt
+http://schema.nethserver.org/module/restore-module-input.json
+```
+
+Restore the module state from a remote backup
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :----------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [restore-module-input.json](module/restore-module-input.json "open original schema") |
+
+## restore-module input Type
+
+`object` ([restore-module input](restore-module-input.md))
+
+## restore-module input Examples
+
+```json
+{
+ "repository": "48ce000a-79b7-5fe6-8558-177fd70c27b4",
+ "path": "dokuwiki/dokuwiki1@f5d24fcd-819c-4b1d-98ad-a1b2ebcee8cf",
+ "snapshot": "",
+ "environment": {
+ "IMAGE_URL": "ghcr.io/nethserver/dokuwiki:latest",
+ "MODULE_UUID": "f5d24fcd-819c-4b1d-98ad-a1b2ebcee8cf",
+ "DOKUWIKI_IMAGE": "docker.io/bitnami/dokuwiki:20200729.0.0-debian-10-r299",
+ "DOKUWIKI_WIKI_NAME": "mywiki",
+ "DOKUWIKI_USERNAME": "admin",
+ "DOKUWIKI_PASSWORD": "pass",
+ "DOKUWIKI_EMAIL": "davidep@nethesis.it",
+ "DOKUWIKI_FULL_NAME": "Wiki Admin",
+ "PHP_ENABLE_OPCACHE": "1",
+ "PHP_MEMORY_LIMIT": "512M",
+ "TRAEFIK_HOST": "mywiki.dp.nethserver.net",
+ "TRAEFIK_HTTP2HTTPS": "False",
+ "TRAEFIK_LETS_ENCRYPT": "False"
+ },
+ "replace": false
+}
+```
+
+# restore-module input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :-------------------------- | :-------- | :------- | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [environment](#environment) | `object` | Required | cannot be null | [restore-module input](restore-module-input-properties-environment-backup.md "http://schema.nethserver.org/module/restore-module-input.json#/properties/environment") |
+| [repository](#repository) | `string` | Required | cannot be null | [restore-module input](restore-module-input-properties-repository-id.md "http://schema.nethserver.org/module/restore-module-input.json#/properties/repository") |
+| [path](#path) | `string` | Required | cannot be null | [restore-module input](restore-module-input-properties-backup-path.md "http://schema.nethserver.org/module/restore-module-input.json#/properties/path") |
+| [snapshot](#snapshot) | `string` | Required | cannot be null | [restore-module input](restore-module-input-properties-snapshot-id.md "http://schema.nethserver.org/module/restore-module-input.json#/properties/snapshot") |
+| [replace](#replace) | `boolean` | Optional | cannot be null | [restore-module input](restore-module-input-properties-replace-flag.md "http://schema.nethserver.org/module/restore-module-input.json#/properties/replace") |
+
+## environment
+
+Environment restored from the given backup
+
+`environment`
+
+* is required
+
+* Type: `object` ([Environment backup](restore-module-input-properties-environment-backup.md))
+
+* cannot be null
+
+* defined in: [restore-module input](restore-module-input-properties-environment-backup.md "http://schema.nethserver.org/module/restore-module-input.json#/properties/environment")
+
+### environment Type
+
+`object` ([Environment backup](restore-module-input-properties-environment-backup.md))
+
+## repository
+
+Backup source repository
+
+`repository`
+
+* is required
+
+* Type: `string` ([Repository ID](restore-module-input-properties-repository-id.md))
+
+* cannot be null
+
+* defined in: [restore-module input](restore-module-input-properties-repository-id.md "http://schema.nethserver.org/module/restore-module-input.json#/properties/repository")
+
+### repository Type
+
+`string` ([Repository ID](restore-module-input-properties-repository-id.md))
+
+### repository Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## path
+
+Path of the backup in the source repository
+
+`path`
+
+* is required
+
+* Type: `string` ([Backup path](restore-module-input-properties-backup-path.md))
+
+* cannot be null
+
+* defined in: [restore-module input](restore-module-input-properties-backup-path.md "http://schema.nethserver.org/module/restore-module-input.json#/properties/path")
+
+### path Type
+
+`string` ([Backup path](restore-module-input-properties-backup-path.md))
+
+### path Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## snapshot
+
+
+
+`snapshot`
+
+* is required
+
+* Type: `string` ([Snapshot ID](restore-module-input-properties-snapshot-id.md))
+
+* cannot be null
+
+* defined in: [restore-module input](restore-module-input-properties-snapshot-id.md "http://schema.nethserver.org/module/restore-module-input.json#/properties/snapshot")
+
+### snapshot Type
+
+`string` ([Snapshot ID](restore-module-input-properties-snapshot-id.md))
+
+## replace
+
+If set to true restore old UUID from 'environment' field
+
+`replace`
+
+* is optional
+
+* Type: `boolean` ([Replace flag](restore-module-input-properties-replace-flag.md))
+
+* cannot be null
+
+* defined in: [restore-module input](restore-module-input-properties-replace-flag.md "http://schema.nethserver.org/module/restore-module-input.json#/properties/replace")
+
+### replace Type
+
+`boolean` ([Replace flag](restore-module-input-properties-replace-flag.md))
diff --git a/core/retrieve-cluster-backup-input-else.md b/core/retrieve-cluster-backup-input-else.md
new file mode 100644
index 000000000..89964703d
--- /dev/null
+++ b/core/retrieve-cluster-backup-input-else.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in retrieve-cluster-backup input Schema
+
+```txt
+http://schema.nethserver.org/cluster/retrieve-cluster-backup-input.json#/else
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [retrieve-cluster-backup-input.json\*](cluster/retrieve-cluster-backup-input.json "open original schema") |
+
+## else Type
+
+unknown
diff --git a/core/retrieve-cluster-backup-input-if-properties-type.md b/core/retrieve-cluster-backup-input-if-properties-type.md
new file mode 100644
index 000000000..c008ae18a
--- /dev/null
+++ b/core/retrieve-cluster-backup-input-if-properties-type.md
@@ -0,0 +1,23 @@
+# Untitled undefined type in retrieve-cluster-backup input Schema
+
+```txt
+http://schema.nethserver.org/cluster/retrieve-cluster-backup-input.json#/if/properties/type
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [retrieve-cluster-backup-input.json\*](cluster/retrieve-cluster-backup-input.json "open original schema") |
+
+## type Type
+
+unknown
+
+## type Constraints
+
+**constant**: the value of this property must be equal to:
+
+```json
+"url"
+```
diff --git a/core/retrieve-cluster-backup-input-if-properties.md b/core/retrieve-cluster-backup-input-if-properties.md
new file mode 100644
index 000000000..a0a03d218
--- /dev/null
+++ b/core/retrieve-cluster-backup-input-if-properties.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in retrieve-cluster-backup input Schema
+
+```txt
+http://schema.nethserver.org/cluster/retrieve-cluster-backup-input.json#/if/properties
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [retrieve-cluster-backup-input.json\*](cluster/retrieve-cluster-backup-input.json "open original schema") |
+
+## properties Type
+
+unknown
diff --git a/core/retrieve-cluster-backup-input-if.md b/core/retrieve-cluster-backup-input-if.md
new file mode 100644
index 000000000..480af7848
--- /dev/null
+++ b/core/retrieve-cluster-backup-input-if.md
@@ -0,0 +1,47 @@
+# Untitled undefined type in retrieve-cluster-backup input Schema
+
+```txt
+http://schema.nethserver.org/cluster/retrieve-cluster-backup-input.json#/if
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [retrieve-cluster-backup-input.json\*](cluster/retrieve-cluster-backup-input.json "open original schema") |
+
+## if Type
+
+unknown
+
+# if Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------ | :------------ | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [type](#type) | Not specified | Optional | cannot be null | [retrieve-cluster-backup input](retrieve-cluster-backup-input-if-properties-type.md "http://schema.nethserver.org/cluster/retrieve-cluster-backup-input.json#/if/properties/type") |
+
+## type
+
+
+
+`type`
+
+* is optional
+
+* Type: unknown
+
+* cannot be null
+
+* defined in: [retrieve-cluster-backup input](retrieve-cluster-backup-input-if-properties-type.md "http://schema.nethserver.org/cluster/retrieve-cluster-backup-input.json#/if/properties/type")
+
+### type Type
+
+unknown
+
+### type Constraints
+
+**constant**: the value of this property must be equal to:
+
+```json
+"url"
+```
diff --git a/core/retrieve-cluster-backup-input-properties-backup-file.md b/core/retrieve-cluster-backup-input-properties-backup-file.md
new file mode 100644
index 000000000..f15bd501a
--- /dev/null
+++ b/core/retrieve-cluster-backup-input-properties-backup-file.md
@@ -0,0 +1,21 @@
+# Backup file Schema
+
+```txt
+http://schema.nethserver.org/cluster/retrieve-cluster-backup-input.json#/properties/file
+```
+
+Backup file encoded with base64
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [retrieve-cluster-backup-input.json\*](cluster/retrieve-cluster-backup-input.json "open original schema") |
+
+## file Type
+
+`string` ([Backup file](retrieve-cluster-backup-input-properties-backup-file.md))
+
+## file Constraints
+
+**encoding**: the string content must be using the base64 content encoding.
+
+**media type**: the media type of the contents of this string is: `application/octet-stream`
diff --git a/core/retrieve-cluster-backup-input-properties-gpg-passhprase.md b/core/retrieve-cluster-backup-input-properties-gpg-passhprase.md
new file mode 100644
index 000000000..8ebdcda42
--- /dev/null
+++ b/core/retrieve-cluster-backup-input-properties-gpg-passhprase.md
@@ -0,0 +1,15 @@
+# GPG passhprase Schema
+
+```txt
+http://schema.nethserver.org/cluster/retrieve-cluster-backup-input.json#/properties/password
+```
+
+Passhprase for backup encryption
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [retrieve-cluster-backup-input.json\*](cluster/retrieve-cluster-backup-input.json "open original schema") |
+
+## password Type
+
+`string` ([GPG passhprase](retrieve-cluster-backup-input-properties-gpg-passhprase.md))
diff --git a/core/retrieve-cluster-backup-input-properties-httpss-url.md b/core/retrieve-cluster-backup-input-properties-httpss-url.md
new file mode 100644
index 000000000..30bb94ada
--- /dev/null
+++ b/core/retrieve-cluster-backup-input-properties-httpss-url.md
@@ -0,0 +1,19 @@
+# HTTP/ss URL Schema
+
+```txt
+http://schema.nethserver.org/cluster/retrieve-cluster-backup-input.json#/properties/url
+```
+
+HTTP/s URL of remote backup
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [retrieve-cluster-backup-input.json\*](cluster/retrieve-cluster-backup-input.json "open original schema") |
+
+## url Type
+
+`string` ([HTTP/ss URL](retrieve-cluster-backup-input-properties-httpss-url.md))
+
+## url Constraints
+
+**URI**: the string must be a URI, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification")
diff --git a/core/retrieve-cluster-backup-input-properties-select-backup-retrieve-method.md b/core/retrieve-cluster-backup-input-properties-select-backup-retrieve-method.md
new file mode 100644
index 000000000..a3538275a
--- /dev/null
+++ b/core/retrieve-cluster-backup-input-properties-select-backup-retrieve-method.md
@@ -0,0 +1,15 @@
+# Select backup retrieve method Schema
+
+```txt
+http://schema.nethserver.org/cluster/retrieve-cluster-backup-input.json#/properties/type
+```
+
+Choose if the backup is uploaded inside the payload or should be downloaded from a URL. Can be 'file' or 'url'
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [retrieve-cluster-backup-input.json\*](cluster/retrieve-cluster-backup-input.json "open original schema") |
+
+## type Type
+
+`string` ([Select backup retrieve method](retrieve-cluster-backup-input-properties-select-backup-retrieve-method.md))
diff --git a/core/retrieve-cluster-backup-input-properties-tls-verfication-flag.md b/core/retrieve-cluster-backup-input-properties-tls-verfication-flag.md
new file mode 100644
index 000000000..4841a9a5d
--- /dev/null
+++ b/core/retrieve-cluster-backup-input-properties-tls-verfication-flag.md
@@ -0,0 +1,15 @@
+# TLS verfication flag Schema
+
+```txt
+http://schema.nethserver.org/cluster/retrieve-cluster-backup-input.json#/properties/tls_verify
+```
+
+Enable or disable TLS verification
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [retrieve-cluster-backup-input.json\*](cluster/retrieve-cluster-backup-input.json "open original schema") |
+
+## tls\_verify Type
+
+`boolean` ([TLS verfication flag](retrieve-cluster-backup-input-properties-tls-verfication-flag.md))
diff --git a/core/retrieve-cluster-backup-input-then.md b/core/retrieve-cluster-backup-input-then.md
new file mode 100644
index 000000000..98760b944
--- /dev/null
+++ b/core/retrieve-cluster-backup-input-then.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in retrieve-cluster-backup input Schema
+
+```txt
+http://schema.nethserver.org/cluster/retrieve-cluster-backup-input.json#/then
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [retrieve-cluster-backup-input.json\*](cluster/retrieve-cluster-backup-input.json "open original schema") |
+
+## then Type
+
+unknown
diff --git a/core/retrieve-cluster-backup-input.json b/core/retrieve-cluster-backup-input.json
new file mode 100644
index 000000000..a850a8cb8
--- /dev/null
+++ b/core/retrieve-cluster-backup-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"retrieve-cluster-backup input","$id":"http://schema.nethserver.org/cluster/retrieve-cluster-backup-input.json","description":"Retrieve cluster backup from base64 field or download it from a HTTP URL","examples":[{"type":"file","password":"mypassword","file":"jA0ECQMC2c...94FL/8y2KV"},{"type":"url","password":"mypassword","url":"https://myserver.org/dump.json.gz.gpg","tls_verify":true}],"type":"object","required":["type","password"],"if":{"properties":{"type":{"const":"url"}}},"then":{"required":["url","tls_verify","password"]},"else":{"required":["file","password"]},"properties":{"password":{"title":"GPG passhprase","description":"Passhprase for backup encryption","type":"string"},"type":{"title":"Select backup retrieve method","description":"Choose if the backup is uploaded inside the payload or should be downloaded from a URL. Can be 'file' or 'url'","type":"string"},"url":{"title":"HTTP/ss URL","description":"HTTP/s URL of remote backup","type":"string","format":"uri"},"tls_verify":{"title":"TLS verfication flag","description":"Enable or disable TLS verification","type":"boolean"},"file":{"title":"Backup file","description":"Backup file encoded with base64","type":"string","contentEncoding":"base64","contentMediaType":"application/octet-stream"}}}
diff --git a/core/retrieve-cluster-backup-input.md b/core/retrieve-cluster-backup-input.md
new file mode 100644
index 000000000..170a76a61
--- /dev/null
+++ b/core/retrieve-cluster-backup-input.md
@@ -0,0 +1,144 @@
+# retrieve-cluster-backup input Schema
+
+```txt
+http://schema.nethserver.org/cluster/retrieve-cluster-backup-input.json
+```
+
+Retrieve cluster backup from base64 field or download it from a HTTP URL
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [retrieve-cluster-backup-input.json](cluster/retrieve-cluster-backup-input.json "open original schema") |
+
+## retrieve-cluster-backup input Type
+
+`object` ([retrieve-cluster-backup input](retrieve-cluster-backup-input.md))
+
+## retrieve-cluster-backup input Examples
+
+```json
+{
+ "type": "file",
+ "password": "mypassword",
+ "file": "jA0ECQMC2c...94FL/8y2KV"
+}
+```
+
+```json
+{
+ "type": "url",
+ "password": "mypassword",
+ "url": "https://myserver.org/dump.json.gz.gpg",
+ "tls_verify": true
+}
+```
+
+# retrieve-cluster-backup input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------- | :-------- | :------- | :------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [password](#password) | `string` | Required | cannot be null | [retrieve-cluster-backup input](retrieve-cluster-backup-input-properties-gpg-passhprase.md "http://schema.nethserver.org/cluster/retrieve-cluster-backup-input.json#/properties/password") |
+| [type](#type) | `string` | Required | cannot be null | [retrieve-cluster-backup input](retrieve-cluster-backup-input-properties-select-backup-retrieve-method.md "http://schema.nethserver.org/cluster/retrieve-cluster-backup-input.json#/properties/type") |
+| [url](#url) | `string` | Optional | cannot be null | [retrieve-cluster-backup input](retrieve-cluster-backup-input-properties-httpss-url.md "http://schema.nethserver.org/cluster/retrieve-cluster-backup-input.json#/properties/url") |
+| [tls\_verify](#tls_verify) | `boolean` | Optional | cannot be null | [retrieve-cluster-backup input](retrieve-cluster-backup-input-properties-tls-verfication-flag.md "http://schema.nethserver.org/cluster/retrieve-cluster-backup-input.json#/properties/tls_verify") |
+| [file](#file) | `string` | Optional | cannot be null | [retrieve-cluster-backup input](retrieve-cluster-backup-input-properties-backup-file.md "http://schema.nethserver.org/cluster/retrieve-cluster-backup-input.json#/properties/file") |
+
+## password
+
+Passhprase for backup encryption
+
+`password`
+
+* is required
+
+* Type: `string` ([GPG passhprase](retrieve-cluster-backup-input-properties-gpg-passhprase.md))
+
+* cannot be null
+
+* defined in: [retrieve-cluster-backup input](retrieve-cluster-backup-input-properties-gpg-passhprase.md "http://schema.nethserver.org/cluster/retrieve-cluster-backup-input.json#/properties/password")
+
+### password Type
+
+`string` ([GPG passhprase](retrieve-cluster-backup-input-properties-gpg-passhprase.md))
+
+## type
+
+Choose if the backup is uploaded inside the payload or should be downloaded from a URL. Can be 'file' or 'url'
+
+`type`
+
+* is required
+
+* Type: `string` ([Select backup retrieve method](retrieve-cluster-backup-input-properties-select-backup-retrieve-method.md))
+
+* cannot be null
+
+* defined in: [retrieve-cluster-backup input](retrieve-cluster-backup-input-properties-select-backup-retrieve-method.md "http://schema.nethserver.org/cluster/retrieve-cluster-backup-input.json#/properties/type")
+
+### type Type
+
+`string` ([Select backup retrieve method](retrieve-cluster-backup-input-properties-select-backup-retrieve-method.md))
+
+## url
+
+HTTP/s URL of remote backup
+
+`url`
+
+* is optional
+
+* Type: `string` ([HTTP/ss URL](retrieve-cluster-backup-input-properties-httpss-url.md))
+
+* cannot be null
+
+* defined in: [retrieve-cluster-backup input](retrieve-cluster-backup-input-properties-httpss-url.md "http://schema.nethserver.org/cluster/retrieve-cluster-backup-input.json#/properties/url")
+
+### url Type
+
+`string` ([HTTP/ss URL](retrieve-cluster-backup-input-properties-httpss-url.md))
+
+### url Constraints
+
+**URI**: the string must be a URI, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification")
+
+## tls\_verify
+
+Enable or disable TLS verification
+
+`tls_verify`
+
+* is optional
+
+* Type: `boolean` ([TLS verfication flag](retrieve-cluster-backup-input-properties-tls-verfication-flag.md))
+
+* cannot be null
+
+* defined in: [retrieve-cluster-backup input](retrieve-cluster-backup-input-properties-tls-verfication-flag.md "http://schema.nethserver.org/cluster/retrieve-cluster-backup-input.json#/properties/tls_verify")
+
+### tls\_verify Type
+
+`boolean` ([TLS verfication flag](retrieve-cluster-backup-input-properties-tls-verfication-flag.md))
+
+## file
+
+Backup file encoded with base64
+
+`file`
+
+* is optional
+
+* Type: `string` ([Backup file](retrieve-cluster-backup-input-properties-backup-file.md))
+
+* cannot be null
+
+* defined in: [retrieve-cluster-backup input](retrieve-cluster-backup-input-properties-backup-file.md "http://schema.nethserver.org/cluster/retrieve-cluster-backup-input.json#/properties/file")
+
+### file Type
+
+`string` ([Backup file](retrieve-cluster-backup-input-properties-backup-file.md))
+
+### file Constraints
+
+**encoding**: the string content must be using the base64 content encoding.
+
+**media type**: the media type of the contents of this string is: `application/octet-stream`
diff --git a/core/revoke-actions-input-properties-action.md b/core/revoke-actions-input-properties-action.md
new file mode 100644
index 000000000..0ea40ecf0
--- /dev/null
+++ b/core/revoke-actions-input-properties-action.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in revoke-actions input Schema
+
+```txt
+http://schema.nethserver.org/cluster/revoke-actions-input.json#/properties/action
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [revoke-actions-input.json\*](cluster/revoke-actions-input.json "open original schema") |
+
+## action Type
+
+unknown
diff --git a/core/revoke-actions-input-properties-on.md b/core/revoke-actions-input-properties-on.md
new file mode 100644
index 000000000..18ff029e0
--- /dev/null
+++ b/core/revoke-actions-input-properties-on.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in revoke-actions input Schema
+
+```txt
+http://schema.nethserver.org/cluster/revoke-actions-input.json#/properties/on
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [revoke-actions-input.json\*](cluster/revoke-actions-input.json "open original schema") |
+
+## on Type
+
+unknown
diff --git a/core/revoke-actions-input-properties-to.md b/core/revoke-actions-input-properties-to.md
new file mode 100644
index 000000000..f52add414
--- /dev/null
+++ b/core/revoke-actions-input-properties-to.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in revoke-actions input Schema
+
+```txt
+http://schema.nethserver.org/cluster/revoke-actions-input.json#/properties/to
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [revoke-actions-input.json\*](cluster/revoke-actions-input.json "open original schema") |
+
+## to Type
+
+unknown
diff --git a/core/revoke-actions-input.json b/core/revoke-actions-input.json
new file mode 100644
index 000000000..423b1ca39
--- /dev/null
+++ b/core/revoke-actions-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"revoke-actions input","$id":"http://schema.nethserver.org/cluster/revoke-actions-input.json","description":"Revoke permissions with matches. See also the grant-actions input schema.","examples":[{"on":"cluster","to":"reader","action":"list-something"},{"action":"list-*","to":"reader","on":"cluster"}],"type":"object","required":["action","to","on"],"properties":{"action":{"$ref":"http://schema.nethserver.org/cluster/grant-actions-input.json#/properties/action"},"to":{"$ref":"http://schema.nethserver.org/cluster/grant-actions-input.json#/properties/to"},"on":{"$ref":"http://schema.nethserver.org/cluster/grant-actions-input.json#/properties/on"}}}
diff --git a/core/revoke-actions-input.md b/core/revoke-actions-input.md
new file mode 100644
index 000000000..8fb53a2d7
--- /dev/null
+++ b/core/revoke-actions-input.md
@@ -0,0 +1,95 @@
+# revoke-actions input Schema
+
+```txt
+http://schema.nethserver.org/cluster/revoke-actions-input.json
+```
+
+Revoke permissions with matches. See also the grant-actions input schema.
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [revoke-actions-input.json](cluster/revoke-actions-input.json "open original schema") |
+
+## revoke-actions input Type
+
+`object` ([revoke-actions input](revoke-actions-input.md))
+
+## revoke-actions input Examples
+
+```json
+{
+ "on": "cluster",
+ "to": "reader",
+ "action": "list-something"
+}
+```
+
+```json
+{
+ "action": "list-*",
+ "to": "reader",
+ "on": "cluster"
+}
+```
+
+# revoke-actions input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :---------------- | :------------ | :------- | :------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [action](#action) | Not specified | Required | cannot be null | [revoke-actions input](revoke-actions-input-properties-action.md "http://schema.nethserver.org/cluster/revoke-actions-input.json#/properties/action") |
+| [to](#to) | Not specified | Required | cannot be null | [revoke-actions input](revoke-actions-input-properties-to.md "http://schema.nethserver.org/cluster/revoke-actions-input.json#/properties/to") |
+| [on](#on) | Not specified | Required | cannot be null | [revoke-actions input](revoke-actions-input-properties-on.md "http://schema.nethserver.org/cluster/revoke-actions-input.json#/properties/on") |
+
+## action
+
+
+
+`action`
+
+* is required
+
+* Type: unknown
+
+* cannot be null
+
+* defined in: [revoke-actions input](revoke-actions-input-properties-action.md "http://schema.nethserver.org/cluster/revoke-actions-input.json#/properties/action")
+
+### action Type
+
+unknown
+
+## to
+
+
+
+`to`
+
+* is required
+
+* Type: unknown
+
+* cannot be null
+
+* defined in: [revoke-actions input](revoke-actions-input-properties-to.md "http://schema.nethserver.org/cluster/revoke-actions-input.json#/properties/to")
+
+### to Type
+
+unknown
+
+## on
+
+
+
+`on`
+
+* is required
+
+* Type: unknown
+
+* cannot be null
+
+* defined in: [revoke-actions input](revoke-actions-input-properties-on.md "http://schema.nethserver.org/cluster/revoke-actions-input.json#/properties/on")
+
+### on Type
+
+unknown
diff --git a/core/revoke-actions-output.json b/core/revoke-actions-output.json
new file mode 100644
index 000000000..006404581
--- /dev/null
+++ b/core/revoke-actions-output.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"revoke-actions output","$id":"http://schema.nethserver.org/cluster/revoke-actions-output.json","description":"Just an empty object, representing a successful response","examples":[{}],"type":"object","properties":{}}
diff --git a/core/revoke-actions-output.md b/core/revoke-actions-output.md
new file mode 100644
index 000000000..84585cdf5
--- /dev/null
+++ b/core/revoke-actions-output.md
@@ -0,0 +1,26 @@
+# revoke-actions output Schema
+
+```txt
+http://schema.nethserver.org/cluster/revoke-actions-output.json
+```
+
+Just an empty object, representing a successful response
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [revoke-actions-output.json](cluster/revoke-actions-output.json "open original schema") |
+
+## revoke-actions output Type
+
+`object` ([revoke-actions output](revoke-actions-output.md))
+
+## revoke-actions output Examples
+
+```json
+{}
+```
+
+# revoke-actions output Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------- | :--- | :------- | :------- | :--------- |
diff --git a/core/rstrieve-cluster-backup-output-properties-cluster-label.md b/core/rstrieve-cluster-backup-output-properties-cluster-label.md
new file mode 100644
index 000000000..913757793
--- /dev/null
+++ b/core/rstrieve-cluster-backup-output-properties-cluster-label.md
@@ -0,0 +1,15 @@
+# Cluster label Schema
+
+```txt
+http://schema.nethserver.org/cluster/rstrieve-cluster-backup-output.json#/properties/cluster
+```
+
+User defined cluster label, can be empty'
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [rstrieve-cluster-backup-output.json\*](cluster/rstrieve-cluster-backup-output.json "open original schema") |
+
+## cluster Type
+
+`string` ([Cluster label](rstrieve-cluster-backup-output-properties-cluster-label.md))
diff --git a/core/rstrieve-cluster-backup-output-properties-number-of-backup-repositories.md b/core/rstrieve-cluster-backup-output-properties-number-of-backup-repositories.md
new file mode 100644
index 000000000..56229a583
--- /dev/null
+++ b/core/rstrieve-cluster-backup-output-properties-number-of-backup-repositories.md
@@ -0,0 +1,15 @@
+# Number of backup repositories Schema
+
+```txt
+http://schema.nethserver.org/cluster/rstrieve-cluster-backup-output.json#/properties/backup_repositories
+```
+
+Number of backup repositories configured in the original cluster
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [rstrieve-cluster-backup-output.json\*](cluster/rstrieve-cluster-backup-output.json "open original schema") |
+
+## backup\_repositories Type
+
+`integer` ([Number of backup repositories](rstrieve-cluster-backup-output-properties-number-of-backup-repositories.md))
diff --git a/core/rstrieve-cluster-backup-output-properties-number-of-domains.md b/core/rstrieve-cluster-backup-output-properties-number-of-domains.md
new file mode 100644
index 000000000..3a6229006
--- /dev/null
+++ b/core/rstrieve-cluster-backup-output-properties-number-of-domains.md
@@ -0,0 +1,15 @@
+# Number of domains Schema
+
+```txt
+http://schema.nethserver.org/cluster/rstrieve-cluster-backup-output.json#/properties/domains
+```
+
+Number of user domains configured in the original cluster
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [rstrieve-cluster-backup-output.json\*](cluster/rstrieve-cluster-backup-output.json "open original schema") |
+
+## domains Type
+
+`integer` ([Number of domains](rstrieve-cluster-backup-output-properties-number-of-domains.md))
diff --git a/core/rstrieve-cluster-backup-output-properties-vpn-endpoint.md b/core/rstrieve-cluster-backup-output-properties-vpn-endpoint.md
new file mode 100644
index 000000000..37377a001
--- /dev/null
+++ b/core/rstrieve-cluster-backup-output-properties-vpn-endpoint.md
@@ -0,0 +1,15 @@
+# VPN endpoint Schema
+
+```txt
+http://schema.nethserver.org/cluster/rstrieve-cluster-backup-output.json#/properties/vpn
+```
+
+Original VPN host and port
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [rstrieve-cluster-backup-output.json\*](cluster/rstrieve-cluster-backup-output.json "open original schema") |
+
+## vpn Type
+
+`string` ([VPN endpoint](rstrieve-cluster-backup-output-properties-vpn-endpoint.md))
diff --git a/core/rstrieve-cluster-backup-output.json b/core/rstrieve-cluster-backup-output.json
new file mode 100644
index 000000000..88d301a9a
--- /dev/null
+++ b/core/rstrieve-cluster-backup-output.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"retrieve-cluster-backup output","$id":"http://schema.nethserver.org/cluster/rstrieve-cluster-backup-output.json","description":"Return info from cluster backup","examples":[{"cluster":"mycluster1","vpn":"cs1.leader.cluster0.gs.nethserver.net:55820","domains":1,"backup_repositories":1}],"type":"object","required":["cluster","vpn","domains","backup_repositories"],"properties":{"cluster":{"title":"Cluster label","description":"User defined cluster label, can be empty'","type":"string"},"vpn":{"title":"VPN endpoint","description":"Original VPN host and port","type":"string"},"domains":{"title":"Number of domains","description":"Number of user domains configured in the original cluster","type":"integer"},"backup_repositories":{"title":"Number of backup repositories","description":"Number of backup repositories configured in the original cluster","type":"integer"}}}
diff --git a/core/rstrieve-cluster-backup-output.md b/core/rstrieve-cluster-backup-output.md
new file mode 100644
index 000000000..6359d2f21
--- /dev/null
+++ b/core/rstrieve-cluster-backup-output.md
@@ -0,0 +1,107 @@
+# retrieve-cluster-backup output Schema
+
+```txt
+http://schema.nethserver.org/cluster/rstrieve-cluster-backup-output.json
+```
+
+Return info from cluster backup
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [rstrieve-cluster-backup-output.json](cluster/rstrieve-cluster-backup-output.json "open original schema") |
+
+## retrieve-cluster-backup output Type
+
+`object` ([retrieve-cluster-backup output](rstrieve-cluster-backup-output.md))
+
+## retrieve-cluster-backup output Examples
+
+```json
+{
+ "cluster": "mycluster1",
+ "vpn": "cs1.leader.cluster0.gs.nethserver.net:55820",
+ "domains": 1,
+ "backup_repositories": 1
+}
+```
+
+# retrieve-cluster-backup output Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------------------------- | :-------- | :------- | :------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [cluster](#cluster) | `string` | Required | cannot be null | [retrieve-cluster-backup output](rstrieve-cluster-backup-output-properties-cluster-label.md "http://schema.nethserver.org/cluster/rstrieve-cluster-backup-output.json#/properties/cluster") |
+| [vpn](#vpn) | `string` | Required | cannot be null | [retrieve-cluster-backup output](rstrieve-cluster-backup-output-properties-vpn-endpoint.md "http://schema.nethserver.org/cluster/rstrieve-cluster-backup-output.json#/properties/vpn") |
+| [domains](#domains) | `integer` | Required | cannot be null | [retrieve-cluster-backup output](rstrieve-cluster-backup-output-properties-number-of-domains.md "http://schema.nethserver.org/cluster/rstrieve-cluster-backup-output.json#/properties/domains") |
+| [backup\_repositories](#backup_repositories) | `integer` | Required | cannot be null | [retrieve-cluster-backup output](rstrieve-cluster-backup-output-properties-number-of-backup-repositories.md "http://schema.nethserver.org/cluster/rstrieve-cluster-backup-output.json#/properties/backup_repositories") |
+
+## cluster
+
+User defined cluster label, can be empty'
+
+`cluster`
+
+* is required
+
+* Type: `string` ([Cluster label](rstrieve-cluster-backup-output-properties-cluster-label.md))
+
+* cannot be null
+
+* defined in: [retrieve-cluster-backup output](rstrieve-cluster-backup-output-properties-cluster-label.md "http://schema.nethserver.org/cluster/rstrieve-cluster-backup-output.json#/properties/cluster")
+
+### cluster Type
+
+`string` ([Cluster label](rstrieve-cluster-backup-output-properties-cluster-label.md))
+
+## vpn
+
+Original VPN host and port
+
+`vpn`
+
+* is required
+
+* Type: `string` ([VPN endpoint](rstrieve-cluster-backup-output-properties-vpn-endpoint.md))
+
+* cannot be null
+
+* defined in: [retrieve-cluster-backup output](rstrieve-cluster-backup-output-properties-vpn-endpoint.md "http://schema.nethserver.org/cluster/rstrieve-cluster-backup-output.json#/properties/vpn")
+
+### vpn Type
+
+`string` ([VPN endpoint](rstrieve-cluster-backup-output-properties-vpn-endpoint.md))
+
+## domains
+
+Number of user domains configured in the original cluster
+
+`domains`
+
+* is required
+
+* Type: `integer` ([Number of domains](rstrieve-cluster-backup-output-properties-number-of-domains.md))
+
+* cannot be null
+
+* defined in: [retrieve-cluster-backup output](rstrieve-cluster-backup-output-properties-number-of-domains.md "http://schema.nethserver.org/cluster/rstrieve-cluster-backup-output.json#/properties/domains")
+
+### domains Type
+
+`integer` ([Number of domains](rstrieve-cluster-backup-output-properties-number-of-domains.md))
+
+## backup\_repositories
+
+Number of backup repositories configured in the original cluster
+
+`backup_repositories`
+
+* is required
+
+* Type: `integer` ([Number of backup repositories](rstrieve-cluster-backup-output-properties-number-of-backup-repositories.md))
+
+* cannot be null
+
+* defined in: [retrieve-cluster-backup output](rstrieve-cluster-backup-output-properties-number-of-backup-repositories.md "http://schema.nethserver.org/cluster/rstrieve-cluster-backup-output.json#/properties/backup_repositories")
+
+### backup\_repositories Type
+
+`integer` ([Number of backup repositories](rstrieve-cluster-backup-output-properties-number-of-backup-repositories.md))
diff --git a/core/run-backup-input-1-properties-backup-id.md b/core/run-backup-input-1-properties-backup-id.md
new file mode 100644
index 000000000..9def152f8
--- /dev/null
+++ b/core/run-backup-input-1-properties-backup-id.md
@@ -0,0 +1,19 @@
+# Backup ID Schema
+
+```txt
+http://schema.nethserver.org/agent/run-backup-input.json#/properties/id
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [run-backup-input.json\*](agent/run-backup-input.json "open original schema") |
+
+## id Type
+
+`integer` ([Backup ID](run-backup-input-1-properties-backup-id.md))
+
+## id Constraints
+
+**minimum**: the value of this number must greater than or equal to: `1`
diff --git a/core/run-backup-input-1.md b/core/run-backup-input-1.md
new file mode 100644
index 000000000..f65a83406
--- /dev/null
+++ b/core/run-backup-input-1.md
@@ -0,0 +1,51 @@
+# run-backup input Schema
+
+```txt
+http://schema.nethserver.org/agent/run-backup-input.json
+```
+
+Run the given backup immediately
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [run-backup-input.json](agent/run-backup-input.json "open original schema") |
+
+## run-backup input Type
+
+`object` ([run-backup input](run-backup-input-1.md))
+
+## run-backup input Examples
+
+```json
+{
+ "id": 5
+}
+```
+
+# run-backup input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :-------- | :-------- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------- |
+| [id](#id) | `integer` | Required | cannot be null | [run-backup input](run-backup-input-1-properties-backup-id.md "http://schema.nethserver.org/agent/run-backup-input.json#/properties/id") |
+
+## id
+
+
+
+`id`
+
+* is required
+
+* Type: `integer` ([Backup ID](run-backup-input-1-properties-backup-id.md))
+
+* cannot be null
+
+* defined in: [run-backup input](run-backup-input-1-properties-backup-id.md "http://schema.nethserver.org/agent/run-backup-input.json#/properties/id")
+
+### id Type
+
+`integer` ([Backup ID](run-backup-input-1-properties-backup-id.md))
+
+### id Constraints
+
+**minimum**: the value of this number must greater than or equal to: `1`
diff --git a/core/run-backup-input-properties-backup-id.md b/core/run-backup-input-properties-backup-id.md
new file mode 100644
index 000000000..0e3b72ba8
--- /dev/null
+++ b/core/run-backup-input-properties-backup-id.md
@@ -0,0 +1,19 @@
+# Backup ID Schema
+
+```txt
+http://schema.nethserver.org/cluster/run-backup-input.json#/properties/id
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [run-backup-input.json\*](cluster/run-backup-input.json "open original schema") |
+
+## id Type
+
+`integer` ([Backup ID](run-backup-input-properties-backup-id.md))
+
+## id Constraints
+
+**minimum**: the value of this number must greater than or equal to: `1`
diff --git a/core/run-backup-input.json b/core/run-backup-input.json
new file mode 100644
index 000000000..12bdc426c
--- /dev/null
+++ b/core/run-backup-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"run-backup input","$id":"http://schema.nethserver.org/agent/run-backup-input.json","description":"Run the given backup immediately","examples":[{"id":5}],"type":"object","required":["id"],"properties":{"id":{"title":"Backup ID","type":"integer","minimum":1}}}
diff --git a/core/run-backup-input.md b/core/run-backup-input.md
new file mode 100644
index 000000000..412f938c0
--- /dev/null
+++ b/core/run-backup-input.md
@@ -0,0 +1,51 @@
+# run-backup input Schema
+
+```txt
+http://schema.nethserver.org/cluster/run-backup-input.json
+```
+
+Run the given backup immediately
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [run-backup-input.json](cluster/run-backup-input.json "open original schema") |
+
+## run-backup input Type
+
+`object` ([run-backup input](run-backup-input.md))
+
+## run-backup input Examples
+
+```json
+{
+ "id": 5
+}
+```
+
+# run-backup input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :-------- | :-------- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------- |
+| [id](#id) | `integer` | Required | cannot be null | [run-backup input](run-backup-input-properties-backup-id.md "http://schema.nethserver.org/cluster/run-backup-input.json#/properties/id") |
+
+## id
+
+
+
+`id`
+
+* is required
+
+* Type: `integer` ([Backup ID](run-backup-input-properties-backup-id.md))
+
+* cannot be null
+
+* defined in: [run-backup input](run-backup-input-properties-backup-id.md "http://schema.nethserver.org/cluster/run-backup-input.json#/properties/id")
+
+### id Type
+
+`integer` ([Backup ID](run-backup-input-properties-backup-id.md))
+
+### id Constraints
+
+**minimum**: the value of this number must greater than or equal to: `1`
diff --git a/core/set-external-provider-name-input-anyof-0-protocol-property-is-ldap-properties-protocol.md b/core/set-external-provider-name-input-anyof-0-protocol-property-is-ldap-properties-protocol.md
new file mode 100644
index 000000000..a6a027ede
--- /dev/null
+++ b/core/set-external-provider-name-input-anyof-0-protocol-property-is-ldap-properties-protocol.md
@@ -0,0 +1,23 @@
+# Untitled string in set-external-provider-name input Schema
+
+```txt
+http://schema.nethserver.org/cluster/set-external-provider-name-input.json#/anyOf/0/not/properties/protocol
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [set-external-provider-name-input.json\*](cluster/set-external-provider-name-input.json "open original schema") |
+
+## protocol Type
+
+`string`
+
+## protocol Constraints
+
+**constant**: the value of this property must be equal to:
+
+```json
+"ldap"
+```
diff --git a/core/set-external-provider-name-input-anyof-0-protocol-property-is-ldap.md b/core/set-external-provider-name-input-anyof-0-protocol-property-is-ldap.md
new file mode 100644
index 000000000..e8cb918b3
--- /dev/null
+++ b/core/set-external-provider-name-input-anyof-0-protocol-property-is-ldap.md
@@ -0,0 +1,47 @@
+# Protocol property is ldap Schema
+
+```txt
+http://schema.nethserver.org/cluster/set-external-provider-name-input.json#/anyOf/0/not
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [set-external-provider-name-input.json\*](cluster/set-external-provider-name-input.json "open original schema") |
+
+## not Type
+
+`object` ([Protocol property is ldap](set-external-provider-name-input-anyof-0-protocol-property-is-ldap.md))
+
+# not Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :-------------------- | :------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| [protocol](#protocol) | `string` | Optional | cannot be null | [set-external-provider-name input](set-external-provider-name-input-anyof-0-protocol-property-is-ldap-properties-protocol.md "http://schema.nethserver.org/cluster/set-external-provider-name-input.json#/anyOf/0/not/properties/protocol") |
+
+## protocol
+
+
+
+`protocol`
+
+* is optional
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [set-external-provider-name input](set-external-provider-name-input-anyof-0-protocol-property-is-ldap-properties-protocol.md "http://schema.nethserver.org/cluster/set-external-provider-name-input.json#/anyOf/0/not/properties/protocol")
+
+### protocol Type
+
+`string`
+
+### protocol Constraints
+
+**constant**: the value of this property must be equal to:
+
+```json
+"ldap"
+```
diff --git a/core/set-external-provider-name-input-anyof-0.md b/core/set-external-provider-name-input-anyof-0.md
new file mode 100644
index 000000000..7360d23d9
--- /dev/null
+++ b/core/set-external-provider-name-input-anyof-0.md
@@ -0,0 +1,19 @@
+# Untitled undefined type in set-external-provider-name input Schema
+
+```txt
+http://schema.nethserver.org/cluster/set-external-provider-name-input.json#/anyOf/0
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [set-external-provider-name-input.json\*](cluster/set-external-provider-name-input.json "open original schema") |
+
+## 0 Type
+
+merged type ([Details](set-external-provider-name-input-anyof-0.md))
+
+not
+
+* [Protocol property is ldap](set-external-provider-name-input-anyof-0-protocol-property-is-ldap.md "check type definition")
diff --git a/core/set-external-provider-name-input-defs-tcp-service-endpoint-properties-host.md b/core/set-external-provider-name-input-defs-tcp-service-endpoint-properties-host.md
new file mode 100644
index 000000000..fef8e7066
--- /dev/null
+++ b/core/set-external-provider-name-input-defs-tcp-service-endpoint-properties-host.md
@@ -0,0 +1,15 @@
+# Untitled string in set-external-provider-name input Schema
+
+```txt
+http://schema.nethserver.org/cluster/set-external-provider-name-input.json#/$defs/tcp-service-endpoint/properties/host
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [set-external-provider-name-input.json\*](cluster/set-external-provider-name-input.json "open original schema") |
+
+## host Type
+
+`string`
diff --git a/core/set-external-provider-name-input-defs-tcp-service-endpoint-properties-port.md b/core/set-external-provider-name-input-defs-tcp-service-endpoint-properties-port.md
new file mode 100644
index 000000000..7f9afd5c8
--- /dev/null
+++ b/core/set-external-provider-name-input-defs-tcp-service-endpoint-properties-port.md
@@ -0,0 +1,21 @@
+# Untitled integer in set-external-provider-name input Schema
+
+```txt
+http://schema.nethserver.org/cluster/set-external-provider-name-input.json#/$defs/tcp-service-endpoint/properties/port
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [set-external-provider-name-input.json\*](cluster/set-external-provider-name-input.json "open original schema") |
+
+## port Type
+
+`integer`
+
+## port Constraints
+
+**maximum**: the value of this number must smaller than or equal to: `65535`
+
+**minimum**: the value of this number must greater than or equal to: `1`
diff --git a/core/set-external-provider-name-input-defs-tcp-service-endpoint.md b/core/set-external-provider-name-input-defs-tcp-service-endpoint.md
new file mode 100644
index 000000000..72c72eb8d
--- /dev/null
+++ b/core/set-external-provider-name-input-defs-tcp-service-endpoint.md
@@ -0,0 +1,64 @@
+# TCP service endpoint Schema
+
+```txt
+http://schema.nethserver.org/cluster/set-external-provider-name-input.json#/$defs/tcp-service-endpoint
+```
+
+Initial TCP backend endpoint configuration
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [set-external-provider-name-input.json\*](cluster/set-external-provider-name-input.json "open original schema") |
+
+## tcp-service-endpoint Type
+
+`object` ([TCP service endpoint](set-external-provider-name-input-defs-tcp-service-endpoint.md))
+
+# tcp-service-endpoint Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------ | :-------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [host](#host) | `string` | Required | cannot be null | [set-external-provider-name input](set-external-provider-name-input-defs-tcp-service-endpoint-properties-host.md "http://schema.nethserver.org/cluster/set-external-provider-name-input.json#/$defs/tcp-service-endpoint/properties/host") |
+| [port](#port) | `integer` | Required | cannot be null | [set-external-provider-name input](set-external-provider-name-input-defs-tcp-service-endpoint-properties-port.md "http://schema.nethserver.org/cluster/set-external-provider-name-input.json#/$defs/tcp-service-endpoint/properties/port") |
+
+## host
+
+
+
+`host`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [set-external-provider-name input](set-external-provider-name-input-defs-tcp-service-endpoint-properties-host.md "http://schema.nethserver.org/cluster/set-external-provider-name-input.json#/$defs/tcp-service-endpoint/properties/host")
+
+### host Type
+
+`string`
+
+## port
+
+
+
+`port`
+
+* is required
+
+* Type: `integer`
+
+* cannot be null
+
+* defined in: [set-external-provider-name input](set-external-provider-name-input-defs-tcp-service-endpoint-properties-port.md "http://schema.nethserver.org/cluster/set-external-provider-name-input.json#/$defs/tcp-service-endpoint/properties/port")
+
+### port Type
+
+`integer`
+
+### port Constraints
+
+**maximum**: the value of this number must smaller than or equal to: `65535`
+
+**minimum**: the value of this number must greater than or equal to: `1`
diff --git a/core/set-external-provider-name-input-defs.md b/core/set-external-provider-name-input-defs.md
new file mode 100644
index 000000000..ecaea965a
--- /dev/null
+++ b/core/set-external-provider-name-input-defs.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in set-external-provider-name input Schema
+
+```txt
+http://schema.nethserver.org/cluster/set-external-provider-name-input.json#/$defs
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [set-external-provider-name-input.json\*](cluster/set-external-provider-name-input.json "open original schema") |
+
+## $defs Type
+
+unknown
diff --git a/core/set-external-provider-name-input-properties-provider-protocol.md b/core/set-external-provider-name-input-properties-provider-protocol.md
new file mode 100644
index 000000000..8c572fb32
--- /dev/null
+++ b/core/set-external-provider-name-input-properties-provider-protocol.md
@@ -0,0 +1,23 @@
+# Provider protocol Schema
+
+```txt
+http://schema.nethserver.org/cluster/set-external-provider-name-input.json#/properties/protocol
+```
+
+Protocol used to communicate with the domain providers.
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [set-external-provider-name-input.json\*](cluster/set-external-provider-name-input.json "open original schema") |
+
+## protocol Type
+
+`string` ([Provider protocol](set-external-provider-name-input-properties-provider-protocol.md))
+
+## protocol Constraints
+
+**enum**: the value of this property must be equal to one of the following values:
+
+| Value | Explanation |
+| :------- | :---------- |
+| `"ldap"` | |
diff --git a/core/set-external-provider-name-input-properties-provider-ui-display-name.md b/core/set-external-provider-name-input-properties-provider-ui-display-name.md
new file mode 100644
index 000000000..c818eda82
--- /dev/null
+++ b/core/set-external-provider-name-input-properties-provider-ui-display-name.md
@@ -0,0 +1,19 @@
+# Provider UI display name Schema
+
+```txt
+http://schema.nethserver.org/cluster/set-external-provider-name-input.json#/properties/ui_name
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [set-external-provider-name-input.json\*](cluster/set-external-provider-name-input.json "open original schema") |
+
+## ui\_name Type
+
+`string` ([Provider UI display name](set-external-provider-name-input-properties-provider-ui-display-name.md))
+
+## ui\_name Constraints
+
+**maximum length**: the maximum number of characters for this string is: `24`
diff --git a/core/set-external-provider-name-input-properties-user-domain-name.md b/core/set-external-provider-name-input-properties-user-domain-name.md
new file mode 100644
index 000000000..e0448c19e
--- /dev/null
+++ b/core/set-external-provider-name-input-properties-user-domain-name.md
@@ -0,0 +1,19 @@
+# User domain name Schema
+
+```txt
+http://schema.nethserver.org/cluster/set-external-provider-name-input.json#/properties/domain
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [set-external-provider-name-input.json\*](cluster/set-external-provider-name-input.json "open original schema") |
+
+## domain Type
+
+`string` ([User domain name](set-external-provider-name-input-properties-user-domain-name.md))
+
+## domain Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/set-external-provider-name-input.json b/core/set-external-provider-name-input.json
new file mode 100644
index 000000000..e06a70a3f
--- /dev/null
+++ b/core/set-external-provider-name-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"set-external-provider-name input","description":"Set the UI display name of an external provider instance","$id":"http://schema.nethserver.org/cluster/set-external-provider-name-input.json","examples":[{"domain":"example.com","protocol":"ldap","host":"ldap2.example.com","port":636,"ui_name":"Secondary"}],"type":"object","required":["ui_name","domain","protocol"],"properties":{"ui_name":{"type":"string","title":"Provider UI display name","maxLength":24},"domain":{"type":"string","title":"User domain name","minLength":1},"protocol":{"type":"string","title":"Provider protocol","description":"Protocol used to communicate with the domain providers.","enum":["ldap"]}},"anyOf":[{"not":{"type":"object","title":"Protocol property is ldap","properties":{"protocol":{"type":"string","const":"ldap"}}}},{"$ref":"#/$defs/tcp-service-endpoint"}],"$defs":{"tcp-service-endpoint":{"type":"object","title":"TCP service endpoint","description":"Initial TCP backend endpoint configuration","properties":{"host":{"type":"string"},"port":{"type":"integer","minimum":1,"maximum":65535}},"required":["host","port"]}}}
diff --git a/core/set-external-provider-name-input.md b/core/set-external-provider-name-input.md
new file mode 100644
index 000000000..3daffa4a4
--- /dev/null
+++ b/core/set-external-provider-name-input.md
@@ -0,0 +1,170 @@
+# set-external-provider-name input Schema
+
+```txt
+http://schema.nethserver.org/cluster/set-external-provider-name-input.json
+```
+
+Set the UI display name of an external provider instance
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [set-external-provider-name-input.json](cluster/set-external-provider-name-input.json "open original schema") |
+
+## set-external-provider-name input Type
+
+`object` ([set-external-provider-name input](set-external-provider-name-input.md))
+
+any of
+
+* not
+
+ * [Protocol property is ldap](set-external-provider-name-input-anyof-0-protocol-property-is-ldap.md "check type definition")
+
+* [TCP service endpoint](set-external-provider-name-input-defs-tcp-service-endpoint.md "check type definition")
+
+## set-external-provider-name input Examples
+
+```json
+{
+ "domain": "example.com",
+ "protocol": "ldap",
+ "host": "ldap2.example.com",
+ "port": 636,
+ "ui_name": "Secondary"
+}
+```
+
+# set-external-provider-name input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :-------------------- | :------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [ui\_name](#ui_name) | `string` | Required | cannot be null | [set-external-provider-name input](set-external-provider-name-input-properties-provider-ui-display-name.md "http://schema.nethserver.org/cluster/set-external-provider-name-input.json#/properties/ui_name") |
+| [domain](#domain) | `string` | Required | cannot be null | [set-external-provider-name input](set-external-provider-name-input-properties-user-domain-name.md "http://schema.nethserver.org/cluster/set-external-provider-name-input.json#/properties/domain") |
+| [protocol](#protocol) | `string` | Required | cannot be null | [set-external-provider-name input](set-external-provider-name-input-properties-provider-protocol.md "http://schema.nethserver.org/cluster/set-external-provider-name-input.json#/properties/protocol") |
+
+## ui\_name
+
+
+
+`ui_name`
+
+* is required
+
+* Type: `string` ([Provider UI display name](set-external-provider-name-input-properties-provider-ui-display-name.md))
+
+* cannot be null
+
+* defined in: [set-external-provider-name input](set-external-provider-name-input-properties-provider-ui-display-name.md "http://schema.nethserver.org/cluster/set-external-provider-name-input.json#/properties/ui_name")
+
+### ui\_name Type
+
+`string` ([Provider UI display name](set-external-provider-name-input-properties-provider-ui-display-name.md))
+
+### ui\_name Constraints
+
+**maximum length**: the maximum number of characters for this string is: `24`
+
+## domain
+
+
+
+`domain`
+
+* is required
+
+* Type: `string` ([User domain name](set-external-provider-name-input-properties-user-domain-name.md))
+
+* cannot be null
+
+* defined in: [set-external-provider-name input](set-external-provider-name-input-properties-user-domain-name.md "http://schema.nethserver.org/cluster/set-external-provider-name-input.json#/properties/domain")
+
+### domain Type
+
+`string` ([User domain name](set-external-provider-name-input-properties-user-domain-name.md))
+
+### domain Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## protocol
+
+Protocol used to communicate with the domain providers.
+
+`protocol`
+
+* is required
+
+* Type: `string` ([Provider protocol](set-external-provider-name-input-properties-provider-protocol.md))
+
+* cannot be null
+
+* defined in: [set-external-provider-name input](set-external-provider-name-input-properties-provider-protocol.md "http://schema.nethserver.org/cluster/set-external-provider-name-input.json#/properties/protocol")
+
+### protocol Type
+
+`string` ([Provider protocol](set-external-provider-name-input-properties-provider-protocol.md))
+
+### protocol Constraints
+
+**enum**: the value of this property must be equal to one of the following values:
+
+| Value | Explanation |
+| :------- | :---------- |
+| `"ldap"` | |
+
+# set-external-provider-name input Definitions
+
+## Definitions group tcp-service-endpoint
+
+Reference this group by using
+
+```json
+{"$ref":"http://schema.nethserver.org/cluster/set-external-provider-name-input.json#/$defs/tcp-service-endpoint"}
+```
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------ | :-------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [host](#host) | `string` | Required | cannot be null | [set-external-provider-name input](set-external-provider-name-input-defs-tcp-service-endpoint-properties-host.md "http://schema.nethserver.org/cluster/set-external-provider-name-input.json#/$defs/tcp-service-endpoint/properties/host") |
+| [port](#port) | `integer` | Required | cannot be null | [set-external-provider-name input](set-external-provider-name-input-defs-tcp-service-endpoint-properties-port.md "http://schema.nethserver.org/cluster/set-external-provider-name-input.json#/$defs/tcp-service-endpoint/properties/port") |
+
+### host
+
+
+
+`host`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [set-external-provider-name input](set-external-provider-name-input-defs-tcp-service-endpoint-properties-host.md "http://schema.nethserver.org/cluster/set-external-provider-name-input.json#/$defs/tcp-service-endpoint/properties/host")
+
+#### host Type
+
+`string`
+
+### port
+
+
+
+`port`
+
+* is required
+
+* Type: `integer`
+
+* cannot be null
+
+* defined in: [set-external-provider-name input](set-external-provider-name-input-defs-tcp-service-endpoint-properties-port.md "http://schema.nethserver.org/cluster/set-external-provider-name-input.json#/$defs/tcp-service-endpoint/properties/port")
+
+#### port Type
+
+`integer`
+
+#### port Constraints
+
+**maximum**: the value of this number must smaller than or equal to: `65535`
+
+**minimum**: the value of this number must greater than or equal to: `1`
diff --git a/core/set-fqdn-input-properties-domain.md b/core/set-fqdn-input-properties-domain.md
new file mode 100644
index 000000000..68d6fed61
--- /dev/null
+++ b/core/set-fqdn-input-properties-domain.md
@@ -0,0 +1,21 @@
+# Untitled string in set-fqdn input Schema
+
+```txt
+http://schema.nethserver.org/node/set-fqdn-input.json#/properties/domain
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :----------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [set-fqdn-input.json\*](node/set-fqdn-input.json "open original schema") |
+
+## domain Type
+
+`string`
+
+## domain Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+**hostname**: the string must be a hostname, according to [RFC 1123, section 2.1](https://tools.ietf.org/html/rfc1123 "check the specification")
diff --git a/core/set-fqdn-input-properties-hostname.md b/core/set-fqdn-input-properties-hostname.md
new file mode 100644
index 000000000..2329701ed
--- /dev/null
+++ b/core/set-fqdn-input-properties-hostname.md
@@ -0,0 +1,21 @@
+# Untitled string in set-fqdn input Schema
+
+```txt
+http://schema.nethserver.org/node/set-fqdn-input.json#/properties/hostname
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :----------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [set-fqdn-input.json\*](node/set-fqdn-input.json "open original schema") |
+
+## hostname Type
+
+`string`
+
+## hostname Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+**hostname**: the string must be a hostname, according to [RFC 1123, section 2.1](https://tools.ietf.org/html/rfc1123 "check the specification")
diff --git a/core/set-fqdn-input.json b/core/set-fqdn-input.json
new file mode 100644
index 000000000..e05c52fdb
--- /dev/null
+++ b/core/set-fqdn-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"set-fqdn input","$id":"http://schema.nethserver.org/node/set-fqdn-input.json","description":"Input schema of the set-fqdn action","examples":[{"hostname":"dn2","domain":"example.org"}],"type":"object","required":["hostname","domain"],"properties":{"hostname":{"type":"string","minLength":1,"format":"hostname"},"domain":{"type":"string","minLength":1,"format":"hostname"}}}
diff --git a/core/set-fqdn-input.md b/core/set-fqdn-input.md
new file mode 100644
index 000000000..87428ff9d
--- /dev/null
+++ b/core/set-fqdn-input.md
@@ -0,0 +1,79 @@
+# set-fqdn input Schema
+
+```txt
+http://schema.nethserver.org/node/set-fqdn-input.json
+```
+
+Input schema of the set-fqdn action
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [set-fqdn-input.json](node/set-fqdn-input.json "open original schema") |
+
+## set-fqdn input Type
+
+`object` ([set-fqdn input](set-fqdn-input.md))
+
+## set-fqdn input Examples
+
+```json
+{
+ "hostname": "dn2",
+ "domain": "example.org"
+}
+```
+
+# set-fqdn input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :-------------------- | :------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------- |
+| [hostname](#hostname) | `string` | Required | cannot be null | [set-fqdn input](set-fqdn-input-properties-hostname.md "http://schema.nethserver.org/node/set-fqdn-input.json#/properties/hostname") |
+| [domain](#domain) | `string` | Required | cannot be null | [set-fqdn input](set-fqdn-input-properties-domain.md "http://schema.nethserver.org/node/set-fqdn-input.json#/properties/domain") |
+
+## hostname
+
+
+
+`hostname`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [set-fqdn input](set-fqdn-input-properties-hostname.md "http://schema.nethserver.org/node/set-fqdn-input.json#/properties/hostname")
+
+### hostname Type
+
+`string`
+
+### hostname Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+**hostname**: the string must be a hostname, according to [RFC 1123, section 2.1](https://tools.ietf.org/html/rfc1123 "check the specification")
+
+## domain
+
+
+
+`domain`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [set-fqdn input](set-fqdn-input-properties-domain.md "http://schema.nethserver.org/node/set-fqdn-input.json#/properties/domain")
+
+### domain Type
+
+`string`
+
+### domain Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+**hostname**: the string must be a hostname, according to [RFC 1123, section 2.1](https://tools.ietf.org/html/rfc1123 "check the specification")
diff --git a/core/set-label-input-properties-name.md b/core/set-label-input-properties-name.md
new file mode 100644
index 000000000..f71b8e21f
--- /dev/null
+++ b/core/set-label-input-properties-name.md
@@ -0,0 +1,19 @@
+# Untitled string in set-label input Schema
+
+```txt
+http://schema.nethserver.org/agent/set-label-input.json#/properties/name
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [set-label-input.json\*](agent/set-label-input.json "open original schema") |
+
+## name Type
+
+`string`
+
+## name Constraints
+
+**maximum length**: the maximum number of characters for this string is: `24`
diff --git a/core/set-label-input.json b/core/set-label-input.json
new file mode 100644
index 000000000..c52831c09
--- /dev/null
+++ b/core/set-label-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"set-label input","$id":"http://schema.nethserver.org/agent/set-label-input.json","description":"Assign a user-defined name to the module instance. The name is shown in the UI.","examples":[{"name":"Nextcloud Milan"}],"type":"object","required":["name"],"properties":{"name":{"type":"string","maxLength":24}}}
diff --git a/core/set-label-input.md b/core/set-label-input.md
new file mode 100644
index 000000000..f0b5bc338
--- /dev/null
+++ b/core/set-label-input.md
@@ -0,0 +1,51 @@
+# set-label input Schema
+
+```txt
+http://schema.nethserver.org/agent/set-label-input.json
+```
+
+Assign a user-defined name to the module instance. The name is shown in the UI.
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [set-label-input.json](agent/set-label-input.json "open original schema") |
+
+## set-label input Type
+
+`object` ([set-label input](set-label-input.md))
+
+## set-label input Examples
+
+```json
+{
+ "name": "Nextcloud Milan"
+}
+```
+
+# set-label input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------ | :------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------- |
+| [name](#name) | `string` | Required | cannot be null | [set-label input](set-label-input-properties-name.md "http://schema.nethserver.org/agent/set-label-input.json#/properties/name") |
+
+## name
+
+
+
+`name`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [set-label input](set-label-input-properties-name.md "http://schema.nethserver.org/agent/set-label-input.json#/properties/name")
+
+### name Type
+
+`string`
+
+### name Constraints
+
+**maximum length**: the maximum number of characters for this string is: `24`
diff --git a/core/set-name-input-1-properties-name.md b/core/set-name-input-1-properties-name.md
new file mode 100644
index 000000000..7613fd443
--- /dev/null
+++ b/core/set-name-input-1-properties-name.md
@@ -0,0 +1,19 @@
+# Untitled string in set-name input Schema
+
+```txt
+http://schema.nethserver.org/cluster/set-name-input.json#/properties/name
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [set-name-input.json\*](cluster/set-name-input.json "open original schema") |
+
+## name Type
+
+`string`
+
+## name Constraints
+
+**maximum length**: the maximum number of characters for this string is: `24`
diff --git a/core/set-name-input-1.md b/core/set-name-input-1.md
new file mode 100644
index 000000000..e49458ed1
--- /dev/null
+++ b/core/set-name-input-1.md
@@ -0,0 +1,51 @@
+# set-name input Schema
+
+```txt
+http://schema.nethserver.org/cluster/set-name-input.json
+```
+
+Assign a user-defined name to the cluster. The name is shown in the UI.
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [set-name-input.json](cluster/set-name-input.json "open original schema") |
+
+## set-name input Type
+
+`object` ([set-name input](set-name-input-1.md))
+
+## set-name input Examples
+
+```json
+{
+ "name": "Adam"
+}
+```
+
+# set-name input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------ | :------- | :------- | :------------- | :-------------------------------------------------------------------------------------------------------------------------------- |
+| [name](#name) | `string` | Required | cannot be null | [set-name input](set-name-input-1-properties-name.md "http://schema.nethserver.org/cluster/set-name-input.json#/properties/name") |
+
+## name
+
+
+
+`name`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [set-name input](set-name-input-1-properties-name.md "http://schema.nethserver.org/cluster/set-name-input.json#/properties/name")
+
+### name Type
+
+`string`
+
+### name Constraints
+
+**maximum length**: the maximum number of characters for this string is: `24`
diff --git a/core/set-name-input-properties-name.md b/core/set-name-input-properties-name.md
new file mode 100644
index 000000000..ad8499808
--- /dev/null
+++ b/core/set-name-input-properties-name.md
@@ -0,0 +1,19 @@
+# Untitled string in set-name input Schema
+
+```txt
+http://schema.nethserver.org/node/set-name-input.json#/properties/name
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :----------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [set-name-input.json\*](node/set-name-input.json "open original schema") |
+
+## name Type
+
+`string`
+
+## name Constraints
+
+**maximum length**: the maximum number of characters for this string is: `24`
diff --git a/core/set-name-input.json b/core/set-name-input.json
new file mode 100644
index 000000000..78ee1c6bd
--- /dev/null
+++ b/core/set-name-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"set-name input","$id":"http://schema.nethserver.org/cluster/set-name-input.json","description":"Assign a user-defined name to the cluster. The name is shown in the UI.","examples":[{"name":"Adam"}],"type":"object","required":["name"],"properties":{"name":{"type":"string","maxLength":24}}}
diff --git a/core/set-name-input.md b/core/set-name-input.md
new file mode 100644
index 000000000..7daa13f28
--- /dev/null
+++ b/core/set-name-input.md
@@ -0,0 +1,51 @@
+# set-name input Schema
+
+```txt
+http://schema.nethserver.org/node/set-name-input.json
+```
+
+Assign a user-defined name to the node instance. The name is shown in the UI.
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [set-name-input.json](node/set-name-input.json "open original schema") |
+
+## set-name input Type
+
+`object` ([set-name input](set-name-input.md))
+
+## set-name input Examples
+
+```json
+{
+ "name": "Milan0"
+}
+```
+
+# set-name input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------ | :------- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------- |
+| [name](#name) | `string` | Required | cannot be null | [set-name input](set-name-input-properties-name.md "http://schema.nethserver.org/node/set-name-input.json#/properties/name") |
+
+## name
+
+
+
+`name`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [set-name input](set-name-input-properties-name.md "http://schema.nethserver.org/node/set-name-input.json#/properties/name")
+
+### name Type
+
+`string`
+
+### name Constraints
+
+**maximum length**: the maximum number of characters for this string is: `24`
diff --git a/core/set-smarthost-properties-enabled.md b/core/set-smarthost-properties-enabled.md
new file mode 100644
index 000000000..bebd01b55
--- /dev/null
+++ b/core/set-smarthost-properties-enabled.md
@@ -0,0 +1,15 @@
+# enabled Schema
+
+```txt
+http://schema.nethserver.org/cluster/set-smarthost.json#/properties/enabled
+```
+
+Enable or disable the smarthost settings
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [set-smarthost.json\*](cluster/set-smarthost.json "open original schema") |
+
+## enabled Type
+
+`boolean` ([enabled](set-smarthost-properties-enabled.md))
diff --git a/core/set-smarthost-properties-encrypt_smtp.md b/core/set-smarthost-properties-encrypt_smtp.md
new file mode 100644
index 000000000..4c56c0bb4
--- /dev/null
+++ b/core/set-smarthost-properties-encrypt_smtp.md
@@ -0,0 +1,25 @@
+# encrypt\_smtp Schema
+
+```txt
+http://schema.nethserver.org/cluster/set-smarthost.json#/properties/encrypt_smtp
+```
+
+Enable or disable the tls encryption with the smtp server
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [set-smarthost.json\*](cluster/set-smarthost.json "open original schema") |
+
+## encrypt\_smtp Type
+
+`string` ([encrypt\_smtp](set-smarthost-properties-encrypt_smtp.md))
+
+## encrypt\_smtp Constraints
+
+**enum**: the value of this property must be equal to one of the following values:
+
+| Value | Explanation |
+| :----------- | :---------- |
+| `"none"` | |
+| `"starttls"` | |
+| `"tls"` | |
diff --git a/core/set-smarthost-properties-host.md b/core/set-smarthost-properties-host.md
new file mode 100644
index 000000000..e3f88076c
--- /dev/null
+++ b/core/set-smarthost-properties-host.md
@@ -0,0 +1,19 @@
+# host Schema
+
+```txt
+http://schema.nethserver.org/cluster/set-smarthost.json#/properties/host
+```
+
+Host name for the smarthost, like 'wiki.nethserver.org'
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [set-smarthost.json\*](cluster/set-smarthost.json "open original schema") |
+
+## host Type
+
+`string` ([host](set-smarthost-properties-host.md))
+
+## host Constraints
+
+**(international) hostname**: the string must be an (IDN) hostname, according to [RFC 5890, section 2.3.2.3](https://tools.ietf.org/html/rfc5890 "check the specification")
diff --git a/core/set-smarthost-properties-password.md b/core/set-smarthost-properties-password.md
new file mode 100644
index 000000000..b12cf4994
--- /dev/null
+++ b/core/set-smarthost-properties-password.md
@@ -0,0 +1,15 @@
+# password Schema
+
+```txt
+http://schema.nethserver.org/cluster/set-smarthost.json#/properties/password
+```
+
+Password to use the smarthost
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [set-smarthost.json\*](cluster/set-smarthost.json "open original schema") |
+
+## password Type
+
+`string` ([password](set-smarthost-properties-password.md))
diff --git a/core/set-smarthost-properties-port.md b/core/set-smarthost-properties-port.md
new file mode 100644
index 000000000..fdf47c498
--- /dev/null
+++ b/core/set-smarthost-properties-port.md
@@ -0,0 +1,21 @@
+# port Schema
+
+```txt
+http://schema.nethserver.org/cluster/set-smarthost.json#/properties/port
+```
+
+Port number of the smtp smarthost
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [set-smarthost.json\*](cluster/set-smarthost.json "open original schema") |
+
+## port Type
+
+`integer` ([port](set-smarthost-properties-port.md))
+
+## port Constraints
+
+**maximum**: the value of this number must smaller than or equal to: `65535`
+
+**minimum**: the value of this number must greater than or equal to: `1`
diff --git a/core/set-smarthost-properties-tls_verify.md b/core/set-smarthost-properties-tls_verify.md
new file mode 100644
index 000000000..b265970bc
--- /dev/null
+++ b/core/set-smarthost-properties-tls_verify.md
@@ -0,0 +1,15 @@
+# tls\_verify Schema
+
+```txt
+http://schema.nethserver.org/cluster/set-smarthost.json#/properties/tls_verify
+```
+
+Enable or disable the usage of a valid certificate
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [set-smarthost.json\*](cluster/set-smarthost.json "open original schema") |
+
+## tls\_verify Type
+
+`boolean` ([tls\_verify](set-smarthost-properties-tls_verify.md))
diff --git a/core/set-smarthost-properties-username.md b/core/set-smarthost-properties-username.md
new file mode 100644
index 000000000..0289cf19e
--- /dev/null
+++ b/core/set-smarthost-properties-username.md
@@ -0,0 +1,15 @@
+# username Schema
+
+```txt
+http://schema.nethserver.org/cluster/set-smarthost.json#/properties/username
+```
+
+Username to use the smarthost smtp
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [set-smarthost.json\*](cluster/set-smarthost.json "open original schema") |
+
+## username Type
+
+`string` ([username](set-smarthost-properties-username.md))
diff --git a/core/set-smarthost.json b/core/set-smarthost.json
new file mode 100644
index 000000000..1dafcd371
--- /dev/null
+++ b/core/set-smarthost.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"set-smarthost settings","description":"Set the settings of an external smarthost provider","$id":"http://schema.nethserver.org/cluster/set-smarthost.json","examples":[{"host":"smtp.example.com","port":587,"username":"username","password":"secret","enabled":true,"encrypt_smtp":"starttls","tls_verify":false}],"type":"object","required":["host","port","username","password","enabled","encrypt_smtp","tls_verify"],"properties":{"username":{"type":"string","title":"username","description":"Username to use the smarthost smtp"},"port":{"type":"integer","title":"port","minimum":1,"maximum":65535,"description":"Port number of the smtp smarthost"},"password":{"type":"string","title":"password","description":"Password to use the smarthost"},"host":{"type":"string","title":"host","description":"Host name for the smarthost, like 'wiki.nethserver.org'","format":"idn-hostname"},"enabled":{"type":"boolean","title":"enabled","description":"Enable or disable the smarthost settings"},"encrypt_smtp":{"type":"string","enum":["none","starttls","tls"],"title":"encrypt_smtp","description":"Enable or disable the tls encryption with the smtp server"},"tls_verify":{"type":"boolean","title":"tls_verify","description":"Enable or disable the usage of a valid certificate"}}}
diff --git a/core/set-smarthost.md b/core/set-smarthost.md
new file mode 100644
index 000000000..08c405e57
--- /dev/null
+++ b/core/set-smarthost.md
@@ -0,0 +1,187 @@
+# set-smarthost settings Schema
+
+```txt
+http://schema.nethserver.org/cluster/set-smarthost.json
+```
+
+Set the settings of an external smarthost provider
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [set-smarthost.json](cluster/set-smarthost.json "open original schema") |
+
+## set-smarthost settings Type
+
+`object` ([set-smarthost settings](set-smarthost.md))
+
+## set-smarthost settings Examples
+
+```json
+{
+ "host": "smtp.example.com",
+ "port": 587,
+ "username": "username",
+ "password": "secret",
+ "enabled": true,
+ "encrypt_smtp": "starttls",
+ "tls_verify": false
+}
+```
+
+# set-smarthost settings Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :----------------------------- | :-------- | :------- | :------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [username](#username) | `string` | Required | cannot be null | [set-smarthost settings](set-smarthost-properties-username.md "http://schema.nethserver.org/cluster/set-smarthost.json#/properties/username") |
+| [port](#port) | `integer` | Required | cannot be null | [set-smarthost settings](set-smarthost-properties-port.md "http://schema.nethserver.org/cluster/set-smarthost.json#/properties/port") |
+| [password](#password) | `string` | Required | cannot be null | [set-smarthost settings](set-smarthost-properties-password.md "http://schema.nethserver.org/cluster/set-smarthost.json#/properties/password") |
+| [host](#host) | `string` | Required | cannot be null | [set-smarthost settings](set-smarthost-properties-host.md "http://schema.nethserver.org/cluster/set-smarthost.json#/properties/host") |
+| [enabled](#enabled) | `boolean` | Required | cannot be null | [set-smarthost settings](set-smarthost-properties-enabled.md "http://schema.nethserver.org/cluster/set-smarthost.json#/properties/enabled") |
+| [encrypt\_smtp](#encrypt_smtp) | `string` | Required | cannot be null | [set-smarthost settings](set-smarthost-properties-encrypt_smtp.md "http://schema.nethserver.org/cluster/set-smarthost.json#/properties/encrypt_smtp") |
+| [tls\_verify](#tls_verify) | `boolean` | Required | cannot be null | [set-smarthost settings](set-smarthost-properties-tls_verify.md "http://schema.nethserver.org/cluster/set-smarthost.json#/properties/tls_verify") |
+
+## username
+
+Username to use the smarthost smtp
+
+`username`
+
+* is required
+
+* Type: `string` ([username](set-smarthost-properties-username.md))
+
+* cannot be null
+
+* defined in: [set-smarthost settings](set-smarthost-properties-username.md "http://schema.nethserver.org/cluster/set-smarthost.json#/properties/username")
+
+### username Type
+
+`string` ([username](set-smarthost-properties-username.md))
+
+## port
+
+Port number of the smtp smarthost
+
+`port`
+
+* is required
+
+* Type: `integer` ([port](set-smarthost-properties-port.md))
+
+* cannot be null
+
+* defined in: [set-smarthost settings](set-smarthost-properties-port.md "http://schema.nethserver.org/cluster/set-smarthost.json#/properties/port")
+
+### port Type
+
+`integer` ([port](set-smarthost-properties-port.md))
+
+### port Constraints
+
+**maximum**: the value of this number must smaller than or equal to: `65535`
+
+**minimum**: the value of this number must greater than or equal to: `1`
+
+## password
+
+Password to use the smarthost
+
+`password`
+
+* is required
+
+* Type: `string` ([password](set-smarthost-properties-password.md))
+
+* cannot be null
+
+* defined in: [set-smarthost settings](set-smarthost-properties-password.md "http://schema.nethserver.org/cluster/set-smarthost.json#/properties/password")
+
+### password Type
+
+`string` ([password](set-smarthost-properties-password.md))
+
+## host
+
+Host name for the smarthost, like 'wiki.nethserver.org'
+
+`host`
+
+* is required
+
+* Type: `string` ([host](set-smarthost-properties-host.md))
+
+* cannot be null
+
+* defined in: [set-smarthost settings](set-smarthost-properties-host.md "http://schema.nethserver.org/cluster/set-smarthost.json#/properties/host")
+
+### host Type
+
+`string` ([host](set-smarthost-properties-host.md))
+
+### host Constraints
+
+**(international) hostname**: the string must be an (IDN) hostname, according to [RFC 5890, section 2.3.2.3](https://tools.ietf.org/html/rfc5890 "check the specification")
+
+## enabled
+
+Enable or disable the smarthost settings
+
+`enabled`
+
+* is required
+
+* Type: `boolean` ([enabled](set-smarthost-properties-enabled.md))
+
+* cannot be null
+
+* defined in: [set-smarthost settings](set-smarthost-properties-enabled.md "http://schema.nethserver.org/cluster/set-smarthost.json#/properties/enabled")
+
+### enabled Type
+
+`boolean` ([enabled](set-smarthost-properties-enabled.md))
+
+## encrypt\_smtp
+
+Enable or disable the tls encryption with the smtp server
+
+`encrypt_smtp`
+
+* is required
+
+* Type: `string` ([encrypt\_smtp](set-smarthost-properties-encrypt_smtp.md))
+
+* cannot be null
+
+* defined in: [set-smarthost settings](set-smarthost-properties-encrypt_smtp.md "http://schema.nethserver.org/cluster/set-smarthost.json#/properties/encrypt_smtp")
+
+### encrypt\_smtp Type
+
+`string` ([encrypt\_smtp](set-smarthost-properties-encrypt_smtp.md))
+
+### encrypt\_smtp Constraints
+
+**enum**: the value of this property must be equal to one of the following values:
+
+| Value | Explanation |
+| :----------- | :---------- |
+| `"none"` | |
+| `"starttls"` | |
+| `"tls"` | |
+
+## tls\_verify
+
+Enable or disable the usage of a valid certificate
+
+`tls_verify`
+
+* is required
+
+* Type: `boolean` ([tls\_verify](set-smarthost-properties-tls_verify.md))
+
+* cannot be null
+
+* defined in: [set-smarthost settings](set-smarthost-properties-tls_verify.md "http://schema.nethserver.org/cluster/set-smarthost.json#/properties/tls_verify")
+
+### tls\_verify Type
+
+`boolean` ([tls\_verify](set-smarthost-properties-tls_verify.md))
diff --git a/core/set-subscription-examples-0-subscription.md b/core/set-subscription-examples-0-subscription.md
new file mode 100644
index 000000000..d6ec333cb
--- /dev/null
+++ b/core/set-subscription-examples-0-subscription.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in set-subscription Schema
+
+```txt
+http://schema.nethserver.org/cluster/set-subscription.json#/examples/0/subscription
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [set-subscription.json\*](cluster/set-subscription.json "open original schema") |
+
+## subscription Type
+
+unknown
diff --git a/core/set-subscription-examples-0.md b/core/set-subscription-examples-0.md
new file mode 100644
index 000000000..6cb300218
--- /dev/null
+++ b/core/set-subscription-examples-0.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in set-subscription Schema
+
+```txt
+http://schema.nethserver.org/cluster/set-subscription.json#/examples/0
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [set-subscription.json\*](cluster/set-subscription.json "open original schema") |
+
+## 0 Type
+
+unknown
diff --git a/core/set-subscription-properties-subscription-properties-auth_token.md b/core/set-subscription-properties-subscription-properties-auth_token.md
new file mode 100644
index 000000000..ded74fea5
--- /dev/null
+++ b/core/set-subscription-properties-subscription-properties-auth_token.md
@@ -0,0 +1,21 @@
+# Untitled string in set-subscription Schema
+
+```txt
+http://schema.nethserver.org/cluster/set-subscription.json#/properties/subscription/properties/auth_token
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [set-subscription.json\*](cluster/set-subscription.json "open original schema") |
+
+## auth\_token Type
+
+`string`
+
+## auth\_token Constraints
+
+**maximum length**: the maximum number of characters for this string is: `128`
+
+**minimum length**: the minimum number of characters for this string is: `32`
diff --git a/core/set-subscription-properties-subscription-properties.md b/core/set-subscription-properties-subscription-properties.md
new file mode 100644
index 000000000..c7d345e29
--- /dev/null
+++ b/core/set-subscription-properties-subscription-properties.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in set-subscription Schema
+
+```txt
+http://schema.nethserver.org/cluster/set-subscription.json#/properties/subscription/properties
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [set-subscription.json\*](cluster/set-subscription.json "open original schema") |
+
+## properties Type
+
+unknown
diff --git a/core/set-subscription-properties-subscription.md b/core/set-subscription-properties-subscription.md
new file mode 100644
index 000000000..f1f15b0cb
--- /dev/null
+++ b/core/set-subscription-properties-subscription.md
@@ -0,0 +1,45 @@
+# Untitled undefined type in set-subscription Schema
+
+```txt
+http://schema.nethserver.org/cluster/set-subscription.json#/properties/subscription
+```
+
+Setting a null subscription, clears all existing subscription attributes and stops any running service
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [set-subscription.json\*](cluster/set-subscription.json "open original schema") |
+
+## subscription Type
+
+`object` ([Details](set-subscription-properties-subscription.md))
+
+# subscription Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------- | :------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| [auth\_token](#auth_token) | `string` | Required | cannot be null | [set-subscription](set-subscription-properties-subscription-properties-auth_token.md "http://schema.nethserver.org/cluster/set-subscription.json#/properties/subscription/properties/auth_token") |
+
+## auth\_token
+
+
+
+`auth_token`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [set-subscription](set-subscription-properties-subscription-properties-auth_token.md "http://schema.nethserver.org/cluster/set-subscription.json#/properties/subscription/properties/auth_token")
+
+### auth\_token Type
+
+`string`
+
+### auth\_token Constraints
+
+**maximum length**: the maximum number of characters for this string is: `128`
+
+**minimum length**: the minimum number of characters for this string is: `32`
diff --git a/core/set-subscription-properties.md b/core/set-subscription-properties.md
new file mode 100644
index 000000000..36e259a8c
--- /dev/null
+++ b/core/set-subscription-properties.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in set-subscription Schema
+
+```txt
+http://schema.nethserver.org/cluster/set-subscription.json#/properties
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [set-subscription.json\*](cluster/set-subscription.json "open original schema") |
+
+## properties Type
+
+unknown
diff --git a/core/set-subscription.json b/core/set-subscription.json
new file mode 100644
index 000000000..07490b885
--- /dev/null
+++ b/core/set-subscription.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"set-subscription","description":"Set up support subscription","$id":"http://schema.nethserver.org/cluster/set-subscription.json","examples":[{"subscription":{"auth_token":"d489701d76b1424e9dacb08b73741ef6d489701d76b1424e9dacb08b73741ef6"}}],"type":["object"],"required":["subscription"],"properties":{"subscription":{"description":"Setting a null subscription, clears all existing subscription attributes and stops any running service","type":["object","null"],"required":["auth_token"],"properties":{"auth_token":{"type":"string","minLength":32,"maxLength":128}}}}}
diff --git a/core/set-subscription.md b/core/set-subscription.md
new file mode 100644
index 000000000..74b59310b
--- /dev/null
+++ b/core/set-subscription.md
@@ -0,0 +1,49 @@
+# set-subscription Schema
+
+```txt
+http://schema.nethserver.org/cluster/set-subscription.json
+```
+
+Set up support subscription
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [set-subscription.json](cluster/set-subscription.json "open original schema") |
+
+## set-subscription Type
+
+`object` ([set-subscription](set-subscription.md))
+
+## set-subscription Examples
+
+```json
+{
+ "subscription": {
+ "auth_token": "d489701d76b1424e9dacb08b73741ef6d489701d76b1424e9dacb08b73741ef6"
+ }
+}
+```
+
+# set-subscription Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :---------------------------- | :------- | :------- | :---------- | :---------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [subscription](#subscription) | `object` | Required | can be null | [set-subscription](set-subscription-properties-subscription.md "http://schema.nethserver.org/cluster/set-subscription.json#/properties/subscription") |
+
+## subscription
+
+Setting a null subscription, clears all existing subscription attributes and stops any running service
+
+`subscription`
+
+* is required
+
+* Type: `object` ([Details](set-subscription-properties-subscription.md))
+
+* can be null
+
+* defined in: [set-subscription](set-subscription-properties-subscription.md "http://schema.nethserver.org/cluster/set-subscription.json#/properties/subscription")
+
+### subscription Type
+
+`object` ([Details](set-subscription-properties-subscription.md))
diff --git a/core/start-support-session-output-properties-session_id.md b/core/start-support-session-output-properties-session_id.md
new file mode 100644
index 000000000..e8cea3c35
--- /dev/null
+++ b/core/start-support-session-output-properties-session_id.md
@@ -0,0 +1,15 @@
+# Untitled string in start-support-session output Schema
+
+```txt
+http://schema.nethserver.org/node/start-support-session-output.json#/properties/session_id
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [start-support-session-output.json\*](node/start-support-session-output.json "open original schema") |
+
+## session\_id Type
+
+`string`
diff --git a/core/start-support-session-output.json b/core/start-support-session-output.json
new file mode 100644
index 000000000..cc0fa2575
--- /dev/null
+++ b/core/start-support-session-output.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"start-support-session output","$id":"http://schema.nethserver.org/node/start-support-session-output.json","description":"Start the support session and obtain the session ID. See get-support-session for details","examples":[{"session_id":"811630de-67f4-5b6d-8b2f-7cc01f592b1b"}],"type":"object","required":["session_id"],"properties":{"session_id":{"type":"string","description":""}}}
diff --git a/core/start-support-session-output.md b/core/start-support-session-output.md
new file mode 100644
index 000000000..fa5ab6197
--- /dev/null
+++ b/core/start-support-session-output.md
@@ -0,0 +1,47 @@
+# start-support-session output Schema
+
+```txt
+http://schema.nethserver.org/node/start-support-session-output.json
+```
+
+Start the support session and obtain the session ID. See get-support-session for details
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [start-support-session-output.json](node/start-support-session-output.json "open original schema") |
+
+## start-support-session output Type
+
+`object` ([start-support-session output](start-support-session-output.md))
+
+## start-support-session output Examples
+
+```json
+{
+ "session_id": "811630de-67f4-5b6d-8b2f-7cc01f592b1b"
+}
+```
+
+# start-support-session output Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------- | :------- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [session\_id](#session_id) | `string` | Required | cannot be null | [start-support-session output](start-support-session-output-properties-session_id.md "http://schema.nethserver.org/node/start-support-session-output.json#/properties/session_id") |
+
+## session\_id
+
+
+
+`session_id`
+
+* is required
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [start-support-session output](start-support-session-output-properties-session_id.md "http://schema.nethserver.org/node/start-support-session-output.json#/properties/session_id")
+
+### session\_id Type
+
+`string`
diff --git a/core/tests/10__cluster_sanity/_dummy/README.md b/core/tests/10__cluster_sanity/_dummy/README.md
new file mode 100644
index 000000000..4df8a61d2
--- /dev/null
+++ b/core/tests/10__cluster_sanity/_dummy/README.md
@@ -0,0 +1,14 @@
+# README
+
+## Top-level Schemas
+
+
+
+## Other Schemas
+
+### Objects
+
+
+
+### Arrays
+
diff --git a/core/transfer-state-input-properties-replace-flag.md b/core/transfer-state-input-properties-replace-flag.md
new file mode 100644
index 000000000..9c07f907e
--- /dev/null
+++ b/core/transfer-state-input-properties-replace-flag.md
@@ -0,0 +1,15 @@
+# Replace flag Schema
+
+```txt
+http://schema.nethserver.org/module/transfer-state-input.json#/properties/replace
+```
+
+If set to true the state cannot be modified after the transfer is completed
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [transfer-state-input.json\*](module/transfer-state-input.json "open original schema") |
+
+## replace Type
+
+`boolean` ([Replace flag](transfer-state-input-properties-replace-flag.md))
diff --git a/core/transfer-state-input-properties-rsyncd-remote-address.md b/core/transfer-state-input-properties-rsyncd-remote-address.md
new file mode 100644
index 000000000..d6181b860
--- /dev/null
+++ b/core/transfer-state-input-properties-rsyncd-remote-address.md
@@ -0,0 +1,19 @@
+# Rsyncd remote address Schema
+
+```txt
+http://schema.nethserver.org/module/transfer-state-input.json#/properties/address
+```
+
+It must be an host name or IP address
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [transfer-state-input.json\*](module/transfer-state-input.json "open original schema") |
+
+## address Type
+
+`string` ([Rsyncd remote address](transfer-state-input-properties-rsyncd-remote-address.md))
+
+## address Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/transfer-state-input-properties-rsyncd-remote-tcp-port-number.md b/core/transfer-state-input-properties-rsyncd-remote-tcp-port-number.md
new file mode 100644
index 000000000..0ba8ea968
--- /dev/null
+++ b/core/transfer-state-input-properties-rsyncd-remote-tcp-port-number.md
@@ -0,0 +1,19 @@
+# Rsyncd remote TCP port number Schema
+
+```txt
+http://schema.nethserver.org/module/transfer-state-input.json#/properties/port
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [transfer-state-input.json\*](module/transfer-state-input.json "open original schema") |
+
+## port Type
+
+`integer` ([Rsyncd remote TCP port number](transfer-state-input-properties-rsyncd-remote-tcp-port-number.md))
+
+## port Constraints
+
+**minimum**: the value of this number must greater than or equal to: `1`
diff --git a/core/transfer-state-input-properties-rsyncd-service-credentials-items.md b/core/transfer-state-input-properties-rsyncd-service-credentials-items.md
new file mode 100644
index 000000000..f19657e4d
--- /dev/null
+++ b/core/transfer-state-input-properties-rsyncd-service-credentials-items.md
@@ -0,0 +1,19 @@
+# Untitled string in transfer-state input Schema
+
+```txt
+http://schema.nethserver.org/module/transfer-state-input.json#/properties/credentials/items
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [transfer-state-input.json\*](module/transfer-state-input.json "open original schema") |
+
+## items Type
+
+`string`
+
+## items Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/transfer-state-input-properties-rsyncd-service-credentials.md b/core/transfer-state-input-properties-rsyncd-service-credentials.md
new file mode 100644
index 000000000..978dfb6d2
--- /dev/null
+++ b/core/transfer-state-input-properties-rsyncd-service-credentials.md
@@ -0,0 +1,21 @@
+# Rsyncd service credentials Schema
+
+```txt
+http://schema.nethserver.org/module/transfer-state-input.json#/properties/credentials
+```
+
+An array with two elements: username, password
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [transfer-state-input.json\*](module/transfer-state-input.json "open original schema") |
+
+## credentials Type
+
+`string[]`
+
+## credentials Constraints
+
+**maximum number of items**: the maximum number of items for this array is: `2`
+
+**minimum number of items**: the minimum number of items for this array is: `2`
diff --git a/core/transfer-state-input.json b/core/transfer-state-input.json
new file mode 100644
index 000000000..6663913f1
--- /dev/null
+++ b/core/transfer-state-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"transfer-state input","$id":"http://schema.nethserver.org/module/transfer-state-input.json","description":"Transfer the module state to another module instance","examples":[{"replace":true,"credentials":["dokuwiki1","s3cr3t"],"address":"10.5.4.3","port":20021}],"type":"object","required":["replace","credentials","address","port"],"properties":{"replace":{"title":"Replace flag","description":"If set to true the state cannot be modified after the transfer is completed","type":"boolean"},"credentials":{"title":"Rsyncd service credentials","description":"An array with two elements: username, password","type":"array","maxItems":2,"minItems":2,"items":{"type":"string","minLength":1}},"address":{"title":"Rsyncd remote address","description":"It must be an host name or IP address","minLength":1,"type":"string"},"port":{"title":"Rsyncd remote TCP port number","type":"integer","minimum":1}}}
diff --git a/core/transfer-state-input.md b/core/transfer-state-input.md
new file mode 100644
index 000000000..ec963269c
--- /dev/null
+++ b/core/transfer-state-input.md
@@ -0,0 +1,124 @@
+# transfer-state input Schema
+
+```txt
+http://schema.nethserver.org/module/transfer-state-input.json
+```
+
+Transfer the module state to another module instance
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :----------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [transfer-state-input.json](module/transfer-state-input.json "open original schema") |
+
+## transfer-state input Type
+
+`object` ([transfer-state input](transfer-state-input.md))
+
+## transfer-state input Examples
+
+```json
+{
+ "replace": true,
+ "credentials": [
+ "dokuwiki1",
+ "s3cr3t"
+ ],
+ "address": "10.5.4.3",
+ "port": 20021
+}
+```
+
+# transfer-state input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :-------------------------- | :-------- | :------- | :------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [replace](#replace) | `boolean` | Required | cannot be null | [transfer-state input](transfer-state-input-properties-replace-flag.md "http://schema.nethserver.org/module/transfer-state-input.json#/properties/replace") |
+| [credentials](#credentials) | `array` | Required | cannot be null | [transfer-state input](transfer-state-input-properties-rsyncd-service-credentials.md "http://schema.nethserver.org/module/transfer-state-input.json#/properties/credentials") |
+| [address](#address) | `string` | Required | cannot be null | [transfer-state input](transfer-state-input-properties-rsyncd-remote-address.md "http://schema.nethserver.org/module/transfer-state-input.json#/properties/address") |
+| [port](#port) | `integer` | Required | cannot be null | [transfer-state input](transfer-state-input-properties-rsyncd-remote-tcp-port-number.md "http://schema.nethserver.org/module/transfer-state-input.json#/properties/port") |
+
+## replace
+
+If set to true the state cannot be modified after the transfer is completed
+
+`replace`
+
+* is required
+
+* Type: `boolean` ([Replace flag](transfer-state-input-properties-replace-flag.md))
+
+* cannot be null
+
+* defined in: [transfer-state input](transfer-state-input-properties-replace-flag.md "http://schema.nethserver.org/module/transfer-state-input.json#/properties/replace")
+
+### replace Type
+
+`boolean` ([Replace flag](transfer-state-input-properties-replace-flag.md))
+
+## credentials
+
+An array with two elements: username, password
+
+`credentials`
+
+* is required
+
+* Type: `string[]`
+
+* cannot be null
+
+* defined in: [transfer-state input](transfer-state-input-properties-rsyncd-service-credentials.md "http://schema.nethserver.org/module/transfer-state-input.json#/properties/credentials")
+
+### credentials Type
+
+`string[]`
+
+### credentials Constraints
+
+**maximum number of items**: the maximum number of items for this array is: `2`
+
+**minimum number of items**: the minimum number of items for this array is: `2`
+
+## address
+
+It must be an host name or IP address
+
+`address`
+
+* is required
+
+* Type: `string` ([Rsyncd remote address](transfer-state-input-properties-rsyncd-remote-address.md))
+
+* cannot be null
+
+* defined in: [transfer-state input](transfer-state-input-properties-rsyncd-remote-address.md "http://schema.nethserver.org/module/transfer-state-input.json#/properties/address")
+
+### address Type
+
+`string` ([Rsyncd remote address](transfer-state-input-properties-rsyncd-remote-address.md))
+
+### address Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## port
+
+
+
+`port`
+
+* is required
+
+* Type: `integer` ([Rsyncd remote TCP port number](transfer-state-input-properties-rsyncd-remote-tcp-port-number.md))
+
+* cannot be null
+
+* defined in: [transfer-state input](transfer-state-input-properties-rsyncd-remote-tcp-port-number.md "http://schema.nethserver.org/module/transfer-state-input.json#/properties/port")
+
+### port Type
+
+`integer` ([Rsyncd remote TCP port number](transfer-state-input-properties-rsyncd-remote-tcp-port-number.md))
+
+### port Constraints
+
+**minimum**: the value of this number must greater than or equal to: `1`
diff --git a/core/update-core-input-1-properties-core_url.md b/core/update-core-input-1-properties-core_url.md
new file mode 100644
index 000000000..08c2725d8
--- /dev/null
+++ b/core/update-core-input-1-properties-core_url.md
@@ -0,0 +1,15 @@
+# Untitled string in update-core input Schema
+
+```txt
+http://schema.nethserver.org/cluster/update-core-input.json#/properties/core_url
+```
+
+Core image URL to download and install. If empty, search core URL inside repository metadata.
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [update-core-input.json\*](cluster/update-core-input.json "open original schema") |
+
+## core\_url Type
+
+`string`
diff --git a/core/update-core-input-1-properties-force.md b/core/update-core-input-1-properties-force.md
new file mode 100644
index 000000000..adc7ca3ee
--- /dev/null
+++ b/core/update-core-input-1-properties-force.md
@@ -0,0 +1,15 @@
+# Untitled boolean in update-core input Schema
+
+```txt
+http://schema.nethserver.org/cluster/update-core-input.json#/properties/force
+```
+
+Force the core update even if the given `core_url` is already present in the local Podman storage
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [update-core-input.json\*](cluster/update-core-input.json "open original schema") |
+
+## force Type
+
+`boolean`
diff --git a/core/update-core-input-1-properties-nodes-items.md b/core/update-core-input-1-properties-nodes-items.md
new file mode 100644
index 000000000..43e62bd49
--- /dev/null
+++ b/core/update-core-input-1-properties-nodes-items.md
@@ -0,0 +1,15 @@
+# Untitled integer in update-core input Schema
+
+```txt
+http://schema.nethserver.org/cluster/update-core-input.json#/properties/nodes/items
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [update-core-input.json\*](cluster/update-core-input.json "open original schema") |
+
+## items Type
+
+`integer`
diff --git a/core/update-core-input-1-properties-nodes.md b/core/update-core-input-1-properties-nodes.md
new file mode 100644
index 000000000..1554b3ba3
--- /dev/null
+++ b/core/update-core-input-1-properties-nodes.md
@@ -0,0 +1,19 @@
+# Untitled array in update-core input Schema
+
+```txt
+http://schema.nethserver.org/cluster/update-core-input.json#/properties/nodes
+```
+
+Identifiers of nodes where the selected image is installed
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [update-core-input.json\*](cluster/update-core-input.json "open original schema") |
+
+## nodes Type
+
+`integer[]`
+
+## nodes Constraints
+
+**minimum number of items**: the minimum number of items for this array is: `1`
diff --git a/core/update-core-input-1.md b/core/update-core-input-1.md
new file mode 100644
index 000000000..d2c9e5631
--- /dev/null
+++ b/core/update-core-input-1.md
@@ -0,0 +1,103 @@
+# update-core input Schema
+
+```txt
+http://schema.nethserver.org/cluster/update-core-input.json
+```
+
+Input schema of the update-core action
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [update-core-input.json](cluster/update-core-input.json "open original schema") |
+
+## update-core input Type
+
+`object` ([update-core input](update-core-input-1.md))
+
+## update-core input Examples
+
+```json
+{
+ "core_url": "ghcr.io/nethserver/core:1.2.0",
+ "nodes": [
+ 1,
+ 2,
+ 3,
+ 4
+ ]
+}
+```
+
+```json
+{
+ "nodes": [
+ 1
+ ]
+}
+```
+
+# update-core input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :--------------------- | :-------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [core\_url](#core_url) | `string` | Optional | cannot be null | [update-core input](update-core-input-1-properties-core_url.md "http://schema.nethserver.org/cluster/update-core-input.json#/properties/core_url") |
+| [nodes](#nodes) | `array` | Required | cannot be null | [update-core input](update-core-input-1-properties-nodes.md "http://schema.nethserver.org/cluster/update-core-input.json#/properties/nodes") |
+| [force](#force) | `boolean` | Optional | cannot be null | [update-core input](update-core-input-1-properties-force.md "http://schema.nethserver.org/cluster/update-core-input.json#/properties/force") |
+
+## core\_url
+
+Core image URL to download and install. If empty, search core URL inside repository metadata.
+
+`core_url`
+
+* is optional
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [update-core input](update-core-input-1-properties-core_url.md "http://schema.nethserver.org/cluster/update-core-input.json#/properties/core_url")
+
+### core\_url Type
+
+`string`
+
+## nodes
+
+Identifiers of nodes where the selected image is installed
+
+`nodes`
+
+* is required
+
+* Type: `integer[]`
+
+* cannot be null
+
+* defined in: [update-core input](update-core-input-1-properties-nodes.md "http://schema.nethserver.org/cluster/update-core-input.json#/properties/nodes")
+
+### nodes Type
+
+`integer[]`
+
+### nodes Constraints
+
+**minimum number of items**: the minimum number of items for this array is: `1`
+
+## force
+
+Force the core update even if the given `core_url` is already present in the local Podman storage
+
+`force`
+
+* is optional
+
+* Type: `boolean`
+
+* cannot be null
+
+* defined in: [update-core input](update-core-input-1-properties-force.md "http://schema.nethserver.org/cluster/update-core-input.json#/properties/force")
+
+### force Type
+
+`boolean`
diff --git a/core/update-core-input-properties-core-image-url.md b/core/update-core-input-properties-core-image-url.md
new file mode 100644
index 000000000..92399e8ec
--- /dev/null
+++ b/core/update-core-input-properties-core-image-url.md
@@ -0,0 +1,25 @@
+# Core image URL Schema
+
+```txt
+http://schema.nethserver.org/node/update-core-input.json#/properties/core_url
+```
+
+URL of the new core image
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :----------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [update-core-input.json\*](node/update-core-input.json "open original schema") |
+
+## core\_url Type
+
+`string` ([Core image URL](update-core-input-properties-core-image-url.md))
+
+## core\_url Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## core\_url Examples
+
+```json
+"ghcr.io/nethserver/core:1.2.0"
+```
diff --git a/core/update-core-input-properties-force.md b/core/update-core-input-properties-force.md
new file mode 100644
index 000000000..3ff7332c5
--- /dev/null
+++ b/core/update-core-input-properties-force.md
@@ -0,0 +1,15 @@
+# Untitled boolean in update-core input Schema
+
+```txt
+http://schema.nethserver.org/node/update-core-input.json#/properties/force
+```
+
+Force the core update even if the given `core_url` is already present in the local Podman storage
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :----------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [update-core-input.json\*](node/update-core-input.json "open original schema") |
+
+## force Type
+
+`boolean`
diff --git a/core/update-core-input.json b/core/update-core-input.json
new file mode 100644
index 000000000..6fe929735
--- /dev/null
+++ b/core/update-core-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"update-core input","$id":"http://schema.nethserver.org/cluster/update-core-input.json","description":"Input schema of the update-core action","examples":[{"core_url":"ghcr.io/nethserver/core:1.2.0","nodes":[1,2,3,4]},{"nodes":[1]}],"type":"object","required":["nodes"],"properties":{"core_url":{"description":"Core image URL to download and install. If empty, search core URL inside repository metadata.","type":"string"},"nodes":{"description":"Identifiers of nodes where the selected image is installed","type":"array","items":{"type":"integer"},"minItems":1},"force":{"description":"Force the core update even if the given `core_url` is already present in the local Podman storage","type":"boolean","default":false}}}
diff --git a/core/update-core-input.md b/core/update-core-input.md
new file mode 100644
index 000000000..e52908c7d
--- /dev/null
+++ b/core/update-core-input.md
@@ -0,0 +1,76 @@
+# update-core input Schema
+
+```txt
+http://schema.nethserver.org/node/update-core-input.json
+```
+
+Update the core module on the local node
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :--------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [update-core-input.json](node/update-core-input.json "open original schema") |
+
+## update-core input Type
+
+`object` ([update-core input](update-core-input.md))
+
+## update-core input Examples
+
+```json
+{
+ "core_url": "ghcr.io/nethserver/core:1.2.0"
+}
+```
+
+# update-core input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :--------------------- | :-------- | :------- | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [core\_url](#core_url) | `string` | Required | cannot be null | [update-core input](update-core-input-properties-core-image-url.md "http://schema.nethserver.org/node/update-core-input.json#/properties/core_url") |
+| [force](#force) | `boolean` | Optional | cannot be null | [update-core input](update-core-input-properties-force.md "http://schema.nethserver.org/node/update-core-input.json#/properties/force") |
+
+## core\_url
+
+URL of the new core image
+
+`core_url`
+
+* is required
+
+* Type: `string` ([Core image URL](update-core-input-properties-core-image-url.md))
+
+* cannot be null
+
+* defined in: [update-core input](update-core-input-properties-core-image-url.md "http://schema.nethserver.org/node/update-core-input.json#/properties/core_url")
+
+### core\_url Type
+
+`string` ([Core image URL](update-core-input-properties-core-image-url.md))
+
+### core\_url Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+### core\_url Examples
+
+```json
+"ghcr.io/nethserver/core:1.2.0"
+```
+
+## force
+
+Force the core update even if the given `core_url` is already present in the local Podman storage
+
+`force`
+
+* is optional
+
+* Type: `boolean`
+
+* cannot be null
+
+* defined in: [update-core input](update-core-input-properties-force.md "http://schema.nethserver.org/node/update-core-input.json#/properties/force")
+
+### force Type
+
+`boolean`
diff --git a/core/update-module-input-1-properties-force.md b/core/update-module-input-1-properties-force.md
new file mode 100644
index 000000000..c9f69a6d9
--- /dev/null
+++ b/core/update-module-input-1-properties-force.md
@@ -0,0 +1,15 @@
+# Untitled boolean in update-module input Schema
+
+```txt
+http://schema.nethserver.org/agent/update-module-input.json#/properties/force
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [update-module-input.json\*](agent/update-module-input.json "open original schema") |
+
+## force Type
+
+`boolean`
diff --git a/core/update-module-input-1-properties-module_url.md b/core/update-module-input-1-properties-module_url.md
new file mode 100644
index 000000000..aa5d2e2d8
--- /dev/null
+++ b/core/update-module-input-1-properties-module_url.md
@@ -0,0 +1,19 @@
+# Untitled string in update-module input Schema
+
+```txt
+http://schema.nethserver.org/agent/update-module-input.json#/properties/module_url
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [update-module-input.json\*](agent/update-module-input.json "open original schema") |
+
+## module\_url Type
+
+`string`
+
+## module\_url Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
diff --git a/core/update-module-input-1.md b/core/update-module-input-1.md
new file mode 100644
index 000000000..e28443f1b
--- /dev/null
+++ b/core/update-module-input-1.md
@@ -0,0 +1,70 @@
+# update-module input Schema
+
+```txt
+http://schema.nethserver.org/agent/update-module-input.json
+```
+
+Input schema of the basic update-module action
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [update-module-input.json](agent/update-module-input.json "open original schema") |
+
+## update-module input Type
+
+`object` ([update-module input](update-module-input-1.md))
+
+## update-module input Examples
+
+```json
+{
+ "module_url": "ghcr.io/nethserver/mymodule:3.2.1"
+}
+```
+
+# update-module input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------- | :-------- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [module\_url](#module_url) | `string` | Optional | cannot be null | [update-module input](update-module-input-1-properties-module_url.md "http://schema.nethserver.org/agent/update-module-input.json#/properties/module_url") |
+| [force](#force) | `boolean` | Optional | cannot be null | [update-module input](update-module-input-1-properties-force.md "http://schema.nethserver.org/agent/update-module-input.json#/properties/force") |
+
+## module\_url
+
+
+
+`module_url`
+
+* is optional
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [update-module input](update-module-input-1-properties-module_url.md "http://schema.nethserver.org/agent/update-module-input.json#/properties/module_url")
+
+### module\_url Type
+
+`string`
+
+### module\_url Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+## force
+
+
+
+`force`
+
+* is optional
+
+* Type: `boolean`
+
+* cannot be null
+
+* defined in: [update-module input](update-module-input-1-properties-force.md "http://schema.nethserver.org/agent/update-module-input.json#/properties/force")
+
+### force Type
+
+`boolean`
diff --git a/core/update-module-input-properties-force.md b/core/update-module-input-properties-force.md
new file mode 100644
index 000000000..2feea3560
--- /dev/null
+++ b/core/update-module-input-properties-force.md
@@ -0,0 +1,15 @@
+# Untitled boolean in update-module input Schema
+
+```txt
+http://schema.nethserver.org/cluster/update-module-input.json#/properties/force
+```
+
+Force the module update even if the given `module_url` is already present in the local Podman storage,
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [update-module-input.json\*](cluster/update-module-input.json "open original schema") |
+
+## force Type
+
+`boolean`
diff --git a/core/update-module-input-properties-instances-items.md b/core/update-module-input-properties-instances-items.md
new file mode 100644
index 000000000..e8bcab224
--- /dev/null
+++ b/core/update-module-input-properties-instances-items.md
@@ -0,0 +1,27 @@
+# Untitled string in update-module input Schema
+
+```txt
+http://schema.nethserver.org/cluster/update-module-input.json#/properties/instances/items
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [update-module-input.json\*](cluster/update-module-input.json "open original schema") |
+
+## items Type
+
+`string`
+
+## items Constraints
+
+**minimum length**: the minimum number of characters for this string is: `2`
+
+**pattern**: the string must match the following regular expression:
+
+```regexp
+^.+[0-9]+$
+```
+
+[try pattern](https://regexr.com/?expression=%5E.%2B%5B0-9%5D%2B%24 "try regular expression with regexr.com")
diff --git a/core/update-module-input-properties-instances.md b/core/update-module-input-properties-instances.md
new file mode 100644
index 000000000..aaa442caa
--- /dev/null
+++ b/core/update-module-input-properties-instances.md
@@ -0,0 +1,19 @@
+# Untitled array in update-module input Schema
+
+```txt
+http://schema.nethserver.org/cluster/update-module-input.json#/properties/instances
+```
+
+Instance identifiers where the selected image is installed
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [update-module-input.json\*](cluster/update-module-input.json "open original schema") |
+
+## instances Type
+
+`string[]`
+
+## instances Constraints
+
+**minimum number of items**: the minimum number of items for this array is: `1`
diff --git a/core/update-module-input-properties-module_url.md b/core/update-module-input-properties-module_url.md
new file mode 100644
index 000000000..bb3cee255
--- /dev/null
+++ b/core/update-module-input-properties-module_url.md
@@ -0,0 +1,15 @@
+# Untitled string in update-module input Schema
+
+```txt
+http://schema.nethserver.org/cluster/update-module-input.json#/properties/module_url
+```
+
+Module image URL to download and install. If empty, search for the latest available image from repositories.
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [update-module-input.json\*](cluster/update-module-input.json "open original schema") |
+
+## module\_url Type
+
+`string`
diff --git a/core/update-module-input.json b/core/update-module-input.json
new file mode 100644
index 000000000..59e60020d
--- /dev/null
+++ b/core/update-module-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"update-module input","$id":"http://schema.nethserver.org/agent/update-module-input.json","description":"Input schema of the basic update-module action","examples":[{"module_url":"ghcr.io/nethserver/mymodule:3.2.1"}],"type":"object","properties":{"module_url":{"type":"string","minLength":1},"force":{"type":"boolean","default":false}}}
diff --git a/core/update-module-input.md b/core/update-module-input.md
new file mode 100644
index 000000000..751964b40
--- /dev/null
+++ b/core/update-module-input.md
@@ -0,0 +1,102 @@
+# update-module input Schema
+
+```txt
+http://schema.nethserver.org/cluster/update-module-input.json
+```
+
+Input schema of the update-module action
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------- |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [update-module-input.json](cluster/update-module-input.json "open original schema") |
+
+## update-module input Type
+
+`object` ([update-module input](update-module-input.md))
+
+## update-module input Examples
+
+```json
+{
+ "module_url": "ghcr.io/nethserver/mymodule:3.2.2",
+ "instances": [
+ "mymodule2",
+ "mymodule3"
+ ]
+}
+```
+
+```json
+{
+ "instances": [
+ "mymodule2",
+ "mymodule3"
+ ]
+}
+```
+
+# update-module input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------- | :-------- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [module\_url](#module_url) | `string` | Optional | cannot be null | [update-module input](update-module-input-properties-module_url.md "http://schema.nethserver.org/cluster/update-module-input.json#/properties/module_url") |
+| [instances](#instances) | `array` | Required | cannot be null | [update-module input](update-module-input-properties-instances.md "http://schema.nethserver.org/cluster/update-module-input.json#/properties/instances") |
+| [force](#force) | `boolean` | Optional | cannot be null | [update-module input](update-module-input-properties-force.md "http://schema.nethserver.org/cluster/update-module-input.json#/properties/force") |
+
+## module\_url
+
+Module image URL to download and install. If empty, search for the latest available image from repositories.
+
+`module_url`
+
+* is optional
+
+* Type: `string`
+
+* cannot be null
+
+* defined in: [update-module input](update-module-input-properties-module_url.md "http://schema.nethserver.org/cluster/update-module-input.json#/properties/module_url")
+
+### module\_url Type
+
+`string`
+
+## instances
+
+Instance identifiers where the selected image is installed
+
+`instances`
+
+* is required
+
+* Type: `string[]`
+
+* cannot be null
+
+* defined in: [update-module input](update-module-input-properties-instances.md "http://schema.nethserver.org/cluster/update-module-input.json#/properties/instances")
+
+### instances Type
+
+`string[]`
+
+### instances Constraints
+
+**minimum number of items**: the minimum number of items for this array is: `1`
+
+## force
+
+Force the module update even if the given `module_url` is already present in the local Podman storage,
+
+`force`
+
+* is optional
+
+* Type: `boolean`
+
+* cannot be null
+
+* defined in: [update-module input](update-module-input-properties-force.md "http://schema.nethserver.org/cluster/update-module-input.json#/properties/force")
+
+### force Type
+
+`boolean`
diff --git a/core/update-routes-input-anyof-0.md b/core/update-routes-input-anyof-0.md
new file mode 100644
index 000000000..faf53073f
--- /dev/null
+++ b/core/update-routes-input-anyof-0.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in update-routes input Schema
+
+```txt
+http://schema.nethserver.org/cluster/update-routes-input.json#/anyOf/0
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [update-routes-input.json\*](cluster/update-routes-input.json "open original schema") |
+
+## 0 Type
+
+unknown
diff --git a/core/update-routes-input-anyof-1.md b/core/update-routes-input-anyof-1.md
new file mode 100644
index 000000000..2b6a5b4b8
--- /dev/null
+++ b/core/update-routes-input-anyof-1.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in update-routes input Schema
+
+```txt
+http://schema.nethserver.org/cluster/update-routes-input.json#/anyOf/1
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [update-routes-input.json\*](cluster/update-routes-input.json "open original schema") |
+
+## 1 Type
+
+unknown
diff --git a/core/update-routes-input-definitions-changelist-items-properties-destination-node-identifier.md b/core/update-routes-input-definitions-changelist-items-properties-destination-node-identifier.md
new file mode 100644
index 000000000..0ac26e4ae
--- /dev/null
+++ b/core/update-routes-input-definitions-changelist-items-properties-destination-node-identifier.md
@@ -0,0 +1,19 @@
+# Destination node identifier Schema
+
+```txt
+http://schema.nethserver.org/cluster/update-routes-input.json#/definitions/changeList/items/properties/node_id
+```
+
+Node ID used as route next-hop
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [update-routes-input.json\*](cluster/update-routes-input.json "open original schema") |
+
+## node\_id Type
+
+`integer` ([Destination node identifier](update-routes-input-definitions-changelist-items-properties-destination-node-identifier.md))
+
+## node\_id Constraints
+
+**minimum (exclusive)**: the value of this number must be greater than: `0`
diff --git a/core/update-routes-input-definitions-changelist-items-properties-ip-address.md b/core/update-routes-input-definitions-changelist-items-properties-ip-address.md
new file mode 100644
index 000000000..186fbf8ef
--- /dev/null
+++ b/core/update-routes-input-definitions-changelist-items-properties-ip-address.md
@@ -0,0 +1,21 @@
+# IP address Schema
+
+```txt
+http://schema.nethserver.org/cluster/update-routes-input.json#/definitions/changeList/items/properties/ip_address
+```
+
+IP address to add or remove. It should be local to the node.
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [update-routes-input.json\*](cluster/update-routes-input.json "open original schema") |
+
+## ip\_address Type
+
+`string` ([IP address](update-routes-input-definitions-changelist-items-properties-ip-address.md))
+
+## ip\_address Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+**IPv4**: the string must be an IPv4 address (dotted quad), according to [RFC 2673, section 3.2](https://tools.ietf.org/html/rfc2673 "check the specification")
diff --git a/core/update-routes-input-definitions-changelist-items.md b/core/update-routes-input-definitions-changelist-items.md
new file mode 100644
index 000000000..384ad4707
--- /dev/null
+++ b/core/update-routes-input-definitions-changelist-items.md
@@ -0,0 +1,68 @@
+# Untitled object in update-routes input Schema
+
+```txt
+http://schema.nethserver.org/cluster/update-routes-input.json#/definitions/changeList/items
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | No | Forbidden | Allowed | none | [update-routes-input.json\*](cluster/update-routes-input.json "open original schema") |
+
+## items Type
+
+`object` ([Details](update-routes-input-definitions-changelist-items.md))
+
+# items Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :------------------------- | :-------- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [ip\_address](#ip_address) | `string` | Required | cannot be null | [update-routes input](update-routes-input-definitions-changelist-items-properties-ip-address.md "http://schema.nethserver.org/cluster/update-routes-input.json#/definitions/changeList/items/properties/ip_address") |
+| [node\_id](#node_id) | `integer` | Required | cannot be null | [update-routes input](update-routes-input-definitions-changelist-items-properties-destination-node-identifier.md "http://schema.nethserver.org/cluster/update-routes-input.json#/definitions/changeList/items/properties/node_id") |
+
+## ip\_address
+
+IP address to add or remove. It should be local to the node.
+
+`ip_address`
+
+* is required
+
+* Type: `string` ([IP address](update-routes-input-definitions-changelist-items-properties-ip-address.md))
+
+* cannot be null
+
+* defined in: [update-routes input](update-routes-input-definitions-changelist-items-properties-ip-address.md "http://schema.nethserver.org/cluster/update-routes-input.json#/definitions/changeList/items/properties/ip_address")
+
+### ip\_address Type
+
+`string` ([IP address](update-routes-input-definitions-changelist-items-properties-ip-address.md))
+
+### ip\_address Constraints
+
+**minimum length**: the minimum number of characters for this string is: `1`
+
+**IPv4**: the string must be an IPv4 address (dotted quad), according to [RFC 2673, section 3.2](https://tools.ietf.org/html/rfc2673 "check the specification")
+
+## node\_id
+
+Node ID used as route next-hop
+
+`node_id`
+
+* is required
+
+* Type: `integer` ([Destination node identifier](update-routes-input-definitions-changelist-items-properties-destination-node-identifier.md))
+
+* cannot be null
+
+* defined in: [update-routes input](update-routes-input-definitions-changelist-items-properties-destination-node-identifier.md "http://schema.nethserver.org/cluster/update-routes-input.json#/definitions/changeList/items/properties/node_id")
+
+### node\_id Type
+
+`integer` ([Destination node identifier](update-routes-input-definitions-changelist-items-properties-destination-node-identifier.md))
+
+### node\_id Constraints
+
+**minimum (exclusive)**: the value of this number must be greater than: `0`
diff --git a/core/update-routes-input-definitions-changelist.md b/core/update-routes-input-definitions-changelist.md
new file mode 100644
index 000000000..b1d94d500
--- /dev/null
+++ b/core/update-routes-input-definitions-changelist.md
@@ -0,0 +1,15 @@
+# Untitled array in update-routes input Schema
+
+```txt
+http://schema.nethserver.org/cluster/update-routes-input.json#/definitions/changeList
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [update-routes-input.json\*](cluster/update-routes-input.json "open original schema") |
+
+## changeList Type
+
+`object[]` ([Details](update-routes-input-definitions-changelist-items.md))
diff --git a/core/update-routes-input-definitions.md b/core/update-routes-input-definitions.md
new file mode 100644
index 000000000..b1b0648b2
--- /dev/null
+++ b/core/update-routes-input-definitions.md
@@ -0,0 +1,15 @@
+# Untitled undefined type in update-routes input Schema
+
+```txt
+http://schema.nethserver.org/cluster/update-routes-input.json#/definitions
+```
+
+
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
+| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [update-routes-input.json\*](cluster/update-routes-input.json "open original schema") |
+
+## definitions Type
+
+unknown
diff --git a/core/update-routes-input.json b/core/update-routes-input.json
new file mode 100644
index 000000000..93d112408
--- /dev/null
+++ b/core/update-routes-input.json
@@ -0,0 +1 @@
+{"$schema":"http://json-schema.org/draft-07/schema#","title":"update-routes input","$id":"http://schema.nethserver.org/cluster/update-routes-input.json","description":"Route traffic to the given IP addresses through the cluster VPN","examples":[{"add":[{"ip_address":"192.168.2.12","node_id":3},{"ip_address":"192.168.3.8","node_id":4}],"remove":[]}],"type":"object","anyOf":[{"required":["add"]},{"required":["remove"]}],"properties":{"add":{"$ref":"#/definitions/changeList"},"remove":{"$ref":"#/definitions/changeList"}},"definitions":{"changeList":{"type":"array","items":{"type":"object","required":["node_id","ip_address"],"properties":{"ip_address":{"title":"IP address","description":"IP address to add or remove. It should be local to the node.","type":"string","format":"ipv4","minLength":1},"node_id":{"type":"integer","exclusiveMinimum":0,"title":"Destination node identifier","description":"Node ID used as route next-hop"}}}}}}
diff --git a/core/update-routes-input.md b/core/update-routes-input.md
new file mode 100644
index 000000000..98ab5385a
--- /dev/null
+++ b/core/update-routes-input.md
@@ -0,0 +1,95 @@
+# update-routes input Schema
+
+```txt
+http://schema.nethserver.org/cluster/update-routes-input.json
+```
+
+Route traffic to the given IP addresses through the cluster VPN
+
+| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
+| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------------- |
+| Can be instantiated | Yes | Unknown status | No | Forbidden | Allowed | none | [update-routes-input.json](cluster/update-routes-input.json "open original schema") |
+
+## update-routes input Type
+
+`object` ([update-routes input](update-routes-input.md))
+
+any of
+
+* [Untitled undefined type in update-routes input](update-routes-input-anyof-0.md "check type definition")
+
+* [Untitled undefined type in update-routes input](update-routes-input-anyof-1.md "check type definition")
+
+## update-routes input Examples
+
+```json
+{
+ "add": [
+ {
+ "ip_address": "192.168.2.12",
+ "node_id": 3
+ },
+ {
+ "ip_address": "192.168.3.8",
+ "node_id": 4
+ }
+ ],
+ "remove": []
+}
+```
+
+# update-routes input Properties
+
+| Property | Type | Required | Nullable | Defined by |
+| :---------------- | :------ | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| [add](#add) | `array` | Optional | cannot be null | [update-routes input](update-routes-input-definitions-changelist.md "http://schema.nethserver.org/cluster/update-routes-input.json#/properties/add") |
+| [remove](#remove) | `array` | Optional | cannot be null | [update-routes input](update-routes-input-definitions-changelist.md "http://schema.nethserver.org/cluster/update-routes-input.json#/properties/remove") |
+
+## add
+
+
+
+`add`
+
+* is optional
+
+* Type: `object[]` ([Details](update-routes-input-definitions-changelist-items.md))
+
+* cannot be null
+
+* defined in: [update-routes input](update-routes-input-definitions-changelist.md "http://schema.nethserver.org/cluster/update-routes-input.json#/properties/add")
+
+### add Type
+
+`object[]` ([Details](update-routes-input-definitions-changelist-items.md))
+
+## remove
+
+
+
+`remove`
+
+* is optional
+
+* Type: `object[]` ([Details](update-routes-input-definitions-changelist-items.md))
+
+* cannot be null
+
+* defined in: [update-routes input](update-routes-input-definitions-changelist.md "http://schema.nethserver.org/cluster/update-routes-input.json#/properties/remove")
+
+### remove Type
+
+`object[]` ([Details](update-routes-input-definitions-changelist-items.md))
+
+# update-routes input Definitions
+
+## Definitions group changeList
+
+Reference this group by using
+
+```json
+{"$ref":"http://schema.nethserver.org/cluster/update-routes-input.json#/definitions/changeList"}
+```
+
+| Property | Type | Required | Nullable | Defined by |
+| :------- | :--- | :------- | :------- | :--------- |