########################################################################## # Category/actions/arguments file # # # Except for general_arguments, this file contains 3 levels # as in this sample command line: # # yunohost monitor info --cpu --ram # ^ ^ ^ ^ # (script) | category | action | parameters # # # Above example will lead to the function 'monitor_info(args)' # in the file 'yunohost_monitor.py' with 'cpu' and 'ram' # stored in an 'args' dictionnary. # # Usage: # You can add a category at the first level, action at the second one, # and arguments at the third one. # If a connexion is needed for the action, don't forget to add it to # the action parameters (ldap, repo, dns or firewall). # # Documentation: # You can see all arguments settings at the argparse documentation: # http://docs.python.org/dev/library/argparse.html # #argparse.ArgumentParser.add_argument # # Don't forget to turn argument yaml style (setting: value) # ########################################################################## ############################# # Global parameters # ############################# _global: configuration: authenticate: - api authenticator: default: vendor: ldap help: admin_password parameters: uri: ldap://localhost:389 base_dn: dc=yunohost,dc=org user_rdn: cn=admin,dc=yunohost,dc=org argument_auth: false arguments: -v: full: --version help: Display YunoHost packages versions action: callback callback: method: yunohost.utils.packages.ynh_packages_version return: true ############################# # User # ############################# user: category_help: Manage users and groups actions: ### user_list() list: action_help: List users api: GET /users arguments: --fields: help: fields to fetch nargs: "+" ### user_create() create: action_help: Create user api: POST /users arguments: username: help: The unique username to create extra: pattern: &pattern_username - !!str ^[a-z0-9_]+$ - "pattern_username" -f: full: --firstname extra: ask: ask_firstname required: True pattern: &pattern_firstname - !!str ^([^\W\d_]{2,30}[ ,.'-]{0,3})+$ - "pattern_firstname" -l: full: --lastname extra: ask: ask_lastname required: True pattern: &pattern_lastname - !!str ^([^\W\d_]{2,30}[ ,.'-]{0,3})+$ - "pattern_lastname" -m: full: --mail help: Main unique email address extra: ask: ask_email required: True pattern: &pattern_email - !!str ^[\w.-]+@([^\W_A-Z]+([-]*[^\W_A-Z]+)*\.)+([^\W\d_]{2,})$ - "pattern_email" -p: full: --password help: User password extra: password: ask_password required: True pattern: &pattern_password - !!str ^.{3,}$ - "pattern_password" comment: good_practices_about_user_password -q: full: --mailbox-quota help: Mailbox size quota default: "0" metavar: "{SIZE|0}" extra: pattern: &pattern_mailbox_quota - !!str ^(\d+[bkMGT])|0$ - "pattern_mailbox_quota" ### user_delete() delete: action_help: Delete user api: DELETE /users/ arguments: username: help: Username to delete extra: pattern: *pattern_username --purge: help: Purge user's home and mail directories action: store_true ### user_update() update: action_help: Update user informations api: PUT /users/ arguments: username: help: Username to update -f: full: --firstname extra: pattern: *pattern_firstname -l: full: --lastname extra: pattern: *pattern_lastname -m: full: --mail extra: pattern: *pattern_email -p: full: --change-password help: New password to set metavar: PASSWORD extra: pattern: *pattern_password --add-mailforward: help: Mailforward addresses to add nargs: "*" metavar: MAIL extra: pattern: *pattern_email --remove-mailforward: help: Mailforward addresses to remove nargs: "*" metavar: MAIL --add-mailalias: help: Mail aliases to add nargs: "*" metavar: MAIL extra: pattern: *pattern_email --remove-mailalias: help: Mail aliases to remove nargs: "*" metavar: MAIL -q: full: --mailbox-quota help: Mailbox size quota metavar: "{SIZE|0}" extra: pattern: *pattern_mailbox_quota ### user_info() info: action_help: Get user information api: GET /users/ arguments: username: help: Username or email to get information subcategories: group: subcategory_help: Manage user groups actions: ### user_group_list() list: action_help: List existing groups api: GET /users/groups arguments: -s: full: --short help: List only the names of groups action: store_true -f: full: --full help: Display all informations known about each groups action: store_true -p: full: --include-primary-groups help: Also display primary groups (each user has an eponym group that only contains itself) action: store_true default: false ### user_group_create() create: action_help: Create group api: POST /users/groups arguments: groupname: help: Name of the group to be created extra: pattern: &pattern_groupname - !!str ^[a-z0-9_]+$ - "pattern_groupname" ### user_group_delete() delete: action_help: Delete group api: DELETE /users/groups/ arguments: groupname: help: Name of the group to be deleted extra: pattern: *pattern_groupname ### user_group_update() update: action_help: Update group api: PUT /users/groups/ arguments: groupname: help: Name of the group to be updated extra: pattern: *pattern_groupname -a: full: --add help: User(s) to add in the group nargs: "*" metavar: USERNAME extra: pattern: *pattern_username -r: full: --remove help: User(s) to remove in the group nargs: "*" metavar: USERNAME extra: pattern: *pattern_username ### user_group_info() info: action_help: Get information about a specific group api: GET /users/groups/ arguments: groupname: help: Name of the group to fetch info about extra: pattern: *pattern_username permission: subcategory_help: Manage permissions actions: ### user_permission_list() list: action_help: List permissions and corresponding accesses api: GET /users/permissions arguments: -s: full: --short help: Only list permission names action: store_true -f: full: --full help: Display all info known about each permission, including the full user list of each group it is granted to. action: store_true ### user_permission_info() info: action_help: Get information about a specific permission api: GET /users/permissions/ arguments: permission: help: Name of the permission to fetch info about ### user_permission_update() update: action_help: Manage group or user permissions api: PUT /users/permissions/ arguments: permission: help: Permission to manage (e.g. mail or nextcloud or wordpress.editors) -a: full: --add help: Group or usernames to grant this permission to nargs: "*" metavar: GROUP_OR_USER extra: pattern: *pattern_username -r: full: --remove help: Group or usernames revoke this permission from nargs: "*" metavar: GROUP_OR_USER extra: pattern: *pattern_username ## user_permission_reset() reset: action_help: Reset allowed groups to the default (all_users) for a given permission api: DELETE /users/permissions/ arguments: permission: help: Permission to manage (e.g. mail or nextcloud or wordpress.editors) ssh: subcategory_help: Manage ssh access actions: ### user_ssh_enable() allow: action_help: Allow the user to uses ssh api: POST /users/ssh/enable arguments: username: help: Username of the user extra: pattern: *pattern_username ### user_ssh_disable() disallow: action_help: Disallow the user to uses ssh api: POST /users/ssh/disable arguments: username: help: Username of the user extra: pattern: *pattern_username ### user_ssh_keys_list() list-keys: action_help: Show user's authorized ssh keys api: GET /users/ssh/keys arguments: username: help: Username of the user extra: pattern: *pattern_username ### user_ssh_keys_add() add-key: action_help: Add a new authorized ssh key for this user api: POST /users/ssh/key arguments: username: help: Username of the user extra: pattern: *pattern_username key: help: The key to be added -c: full: --comment help: Optionnal comment about the key ### user_ssh_keys_remove() remove-key: action_help: Remove an authorized ssh key for this user api: DELETE /users/ssh/key arguments: username: help: Username of the user extra: pattern: *pattern_username key: help: The key to be removed ############################# # Domain # ############################# domain: category_help: Manage domains actions: ### domain_list() list: action_help: List domains api: GET /domains arguments: --exclude-subdomains: help: Filter out domains that are obviously subdomains of other declared domains action: store_true ### domain_add() add: action_help: Create a custom domain api: POST /domains arguments: domain: help: Domain name to add extra: pattern: &pattern_domain - !!str ^([^\W_A-Z]+([-]*[^\W_A-Z]+)*\.)+([^\W\d_]{2,})$ - "pattern_domain" -d: full: --dyndns help: Subscribe to the DynDNS service action: store_true ### domain_remove() remove: action_help: Delete domains api: DELETE /domains/ arguments: domain: help: Domain to delete extra: pattern: *pattern_domain ### domain_dns_conf() dns-conf: action_help: Generate sample DNS configuration for a domain api: GET /domains//dns arguments: domain: help: Target domain -t: full: --ttl help: Time To Live (TTL) in second before DNS servers update. Default is 3600 seconds (i.e. 1 hour). extra: pattern: - !!str ^[0-9]+$ - "pattern_positive_number" ### domain_maindomain() main-domain: action_help: Check the current main domain, or change it deprecated_alias: - maindomain api: - GET /domains/main - PUT /domains/main arguments: -n: full: --new-main-domain help: Change the current main domain extra: pattern: *pattern_domain ### certificate_status() cert-status: action_help: List status of current certificates (all by default). api: GET /domains/cert-status/ arguments: domain_list: help: Domains to check nargs: "*" --full: help: Show more details action: store_true ### certificate_install() cert-install: action_help: Install Let's Encrypt certificates for given domains (all by default). api: POST /domains/cert-install/ arguments: domain_list: help: Domains for which to install the certificates nargs: "*" --force: help: Install even if current certificate is not self-signed action: store_true --no-checks: help: Does not perform any check that your domain seems correctly configured (DNS, reachability) before attempting to install. (Not recommended) action: store_true --self-signed: help: Install self-signed certificate instead of Let's Encrypt action: store_true --staging: help: Use the fake/staging Let's Encrypt certification authority. The new certificate won't actually be enabled - it is only intended to test the main steps of the procedure. action: store_true ### certificate_renew() cert-renew: action_help: Renew the Let's Encrypt certificates for given domains (all by default). api: POST /domains/cert-renew/ arguments: domain_list: help: Domains for which to renew the certificates nargs: "*" --force: help: Ignore the validity threshold (30 days) action: store_true --email: help: Send an email to root with logs if some renewing fails action: store_true --no-checks: help: Does not perform any check that your domain seems correctly configured (DNS, reachability) before attempting to renew. (Not recommended) action: store_true --staging: help: Use the fake/staging Let's Encrypt certification authority. The new certificate won't actually be enabled - it is only intended to test the main steps of the procedure. action: store_true ### domain_url_available() url-available: action_help: Check availability of a web path api: GET /domain/urlavailable arguments: domain: help: The domain for the web path (e.g. your.domain.tld) extra: pattern: *pattern_domain path: help: The path to check (e.g. /coffee) ### domain_info() # info: # action_help: Get domain informations # api: GET /domains/ # arguments: # domain: # help: "" # extra: # pattern: # - '^([a-zA-Z0-9]{1}([a-zA-Z0-9\-]*[a-zA-Z0-9])*)(\.[a-zA-Z0-9]{1}([a-zA-Z0-9\-]*[a-zA-Z0-9])*)*(\.[a-zA-Z]{1}([a-zA-Z0-9\-]*[a-zA-Z0-9])*)$' # - "Must be a valid domain name (e.g. my-domain.org)" ############################# # App # ############################# app: category_help: Manage apps actions: catalog: action_help: Show the catalog of installable application api: GET /appscatalog arguments: -f: full: --full help: Display all details, including the app manifest and various other infos action: store_true -c: full: --with-categories help: Also return a list of app categories action: store_true fetchlist: deprecated: true ### app_list() list: action_help: List installed apps api: GET /apps arguments: -f: full: --full help: Display all details, including the app manifest and various other infos action: store_true -i: full: --installed help: Dummy argument, does nothing anymore (still there only for backward compatibility) action: store_true filter: nargs: '?' ### app_info() info: action_help: Show infos about a specific installed app api: GET /apps/ arguments: app: help: Specific app ID -f: full: --full help: Display all details, including the app manifest and various other infos action: store_true ### app_map() map: action_help: Show the mapping between urls and apps api: GET /appsmap arguments: -a: full: --app help: Specific app to map -r: full: --raw help: Return complete dict action: store_true -u: full: --user help: Allowed app map for a user extra: pattern: *pattern_username ### app_install() install: action_help: Install apps api: POST /apps arguments: app: help: Name, local path or git URL of the app to install -l: full: --label help: Custom name for the app -a: full: --args help: Serialized arguments for app script (i.e. "domain=domain.tld&path=/path") -n: full: --no-remove-on-failure help: Debug option to avoid removing the app on a failed installation action: store_true -f: full: --force help: Do not ask confirmation if the app is not safe to use (low quality, experimental or 3rd party) action: store_true ### app_remove() TODO: Write help remove: action_help: Remove app api: DELETE /apps/ arguments: app: help: App(s) to delete ### app_upgrade() upgrade: action_help: Upgrade app api: PUT /upgrade/apps arguments: app: help: App(s) to upgrade (default all) nargs: "*" -u: full: --url help: Git url to fetch for upgrade -f: full: --file help: Folder or tarball for upgrade ### app_change_url() change-url: action_help: Change app's URL api: PUT /apps//changeurl arguments: app: help: Target app instance name -d: full: --domain help: New app domain on which the application will be moved extra: ask: ask_new_domain pattern: *pattern_domain required: True -p: full: --path help: New path at which the application will be moved extra: ask: ask_new_path required: True ### app_setting() setting: action_help: Set or get an app setting value api: GET /apps//settings arguments: app: help: App ID key: help: Key to get/set -v: full: --value help: Value to set -d: full: --delete help: Delete the key action: store_true ### app_register_url() register-url: action_help: Book/register a web path for a given app api: PUT /tools/registerurl arguments: app: help: App which will use the web path domain: help: The domain on which the app should be registered (e.g. your.domain.tld) path: help: The path to be registered (e.g. /coffee) ### app_makedefault() makedefault: action_help: Redirect domain root to an app api: PUT /apps//default arguments: app: help: App name to put on domain root -d: full: --domain help: Specific domain to put app on (the app domain by default) ### app_ssowatconf() ssowatconf: action_help: Regenerate SSOwat configuration file api: PUT /ssowatconf ### app_change_label() change-label: action_help: Change app label api: PUT /apps//label arguments: app: help: App ID new_label: help: New app label ### app_addaccess() TODO: Write help addaccess: action_help: Grant access right to users (everyone by default) api: PUT /access deprecated: true arguments: apps: nargs: "+" -u: full: --users nargs: "*" ### app_removeaccess() TODO: Write help removeaccess: action_help: Revoke access right to users (everyone by default) api: DELETE /access deprecated: true arguments: apps: nargs: "+" -u: full: --users nargs: "*" ### app_clearaccess() clearaccess: action_help: Reset access rights for the app api: POST /access deprecated: true arguments: apps: nargs: "+" subcategories: action: subcategory_help: Handle apps actions actions: ### app_action_list() list: action_help: List app actions api: GET /apps//actions arguments: app: help: App name ### app_action_run() run: action_help: Run app action api: PUT /apps//actions/ arguments: app: help: App name action: help: action id -a: full: --args help: Serialized arguments for app script (i.e. "domain=domain.tld&path=/path") config: subcategory_help: Applications configuration panel actions: ### app_config_show_panel() show-panel: action_help: show config panel for the application api: GET /apps//config-panel arguments: app: help: App name ### app_config_apply() apply: action_help: apply the new configuration api: POST /apps//config arguments: app: help: App name -a: full: --args help: Serialized arguments for new configuration (i.e. "domain=domain.tld&path=/path") ############################# # Backup # ############################# backup: category_help: Manage backups actions: ### backup_create() create: action_help: Create a backup local archive. If neither --apps or --system are given, this will backup all apps and all system parts. If only --apps if given, this will only backup apps and no system parts. Similarly, if only --system is given, this will only backup system parts and no apps. api: POST /backup arguments: -n: full: --name help: Name of the backup archive extra: pattern: &pattern_backup_archive_name - !!str ^[\w\-\._]{1,50}(? arguments: name: help: Name of the local backup archive --system: help: List of system parts to restore (or all if none is given) nargs: "*" --apps: help: List of application names to restore (or all if none is given) nargs: "*" --force: help: Force restauration on an already installed system action: store_true ### backup_list() list: action_help: List available local backup archives api: GET /backup/archives arguments: -i: full: --with-info help: Show backup information for each archive action: store_true -H: full: --human-readable help: Print sizes in human readable format action: store_true ### backup_info() info: action_help: Show info about a local backup archive api: GET /backup/archives/ arguments: name: help: Name of the local backup archive -d: full: --with-details help: Show additional backup information action: store_true -H: full: --human-readable help: Print sizes in human readable format action: store_true ### backup_delete() delete: action_help: Delete a backup archive api: DELETE /backup/archives/ arguments: name: help: Name of the archive to delete extra: pattern: *pattern_backup_archive_name ############################# # Settings # ############################# settings: category_help: Manage YunoHost global settings actions: ### settings_list() list: action_help: list all entries of the settings api: GET /settings ### settings_get() get: action_help: get an entry value in the settings api: GET /settings/ arguments: key: help: Settings key --full: help: Show more details action: store_true ### settings_set() set: action_help: set an entry value in the settings api: POST /settings/ arguments: key: help: Settings key -v: full: --value help: new value extra: required: True ### settings_reset_all() reset-all: action_help: reset all settings to their default value api: DELETE /settings ### settings_reset() reset: action_help: set an entry value to its default one api: DELETE /settings/ arguments: key: help: Settings key ############################# # Service # ############################# service: category_help: Manage services actions: ### service_add() add: action_help: Add a service # api: POST /services arguments: name: help: Service name to add -d: full: --description help: Description of the service -l: full: --log help: Absolute path to log file to display nargs: "+" -t: full: --log_type help: Type of the log (file or systemd) nargs: "+" choices: - file - systemd --test_status: help: Specify a custom bash command to check the status of the service. Note that it only makes sense to specify this if the corresponding systemd service does not return the proper information already. --test_conf: help: Specify a custom bash command to check if the configuration of the service is valid or broken, similar to nginx -t. --needs_exposed_ports: help: A list of ports that needs to be publicly exposed for the service to work as intended. nargs: "+" type: int metavar: PORT -n: full: --need_lock help: Use this option to prevent deadlocks if the service does invoke yunohost commands. action: store_true -s: full: --status help: Deprecated, old option. Does nothing anymore. Possibly check the --test_status option. ### service_remove() remove: action_help: Remove a service # api: DELETE /services arguments: name: help: Service name to remove ### service_start() start: action_help: Start one or more services api: PUT /services/ arguments: names: help: Service name to start nargs: "+" metavar: NAME ### service_stop() stop: action_help: Stop one or more services api: DELETE /services/ arguments: names: help: Service name to stop nargs: "+" metavar: NAME ### service_reload() reload: action_help: Reload one or more services arguments: names: help: Service name to reload nargs: "+" metavar: NAME ### service_restart() restart: action_help: Restart one or more services. If the services are not running yet, they will be started. api: PUT /services//restart arguments: names: help: Service name to restart nargs: "+" metavar: NAME ### service_reload_or_restart() reload_or_restart: action_help: Reload one or more services if they support it. If not, restart them instead. If the services are not running yet, they will be started. arguments: names: help: Service name to reload or restart nargs: "+" metavar: NAME ### service_enable() enable: action_help: Enable one or more services api: PUT /services//enable arguments: names: help: Service name to enable nargs: "+" metavar: NAME ### service_disable() disable: action_help: Disable one or more services api: DELETE /services//enable arguments: names: help: Service name to disable nargs: "+" metavar: NAME ### service_status() status: action_help: Show status information about one or more services (all by default) api: - GET /services - GET /services/ arguments: names: help: Service name to show nargs: "*" metavar: NAME ### service_log() log: action_help: Log every log files of a service api: GET /services//log arguments: name: help: Service name to log -n: full: --number help: Number of lines to display default: 50 type: int ### service_regen_conf() regen-conf: action_help: Regenerate the configuration file(s) for a service api: PUT /services/regenconf deprecated_alias: - regenconf arguments: names: help: Services name to regenerate configuration of nargs: "*" metavar: NAME -d: full: --with-diff help: Show differences in case of configuration changes action: store_true -f: full: --force help: > Override all manual modifications in configuration files action: store_true -n: full: --dry-run help: Show what would have been regenerated action: store_true -p: full: --list-pending help: List pending configuration files and exit action: store_true ############################# # Firewall # ############################# firewall: category_help: Manage firewall rules actions: ### firewall_list() list: action_help: List all firewall rules api: GET /firewall arguments: -r: full: --raw help: Return the complete YAML dict action: store_true -i: full: --by-ip-version help: List rules by IP version action: store_true -f: full: --list-forwarded help: List forwarded ports with UPnP action: store_true ### firewall_reload() reload: action_help: Reload all firewall rules api: PUT /firewall arguments: --skip-upnp: help: Do not refresh port forwarding using UPnP action: store_true ### firewall_allow() allow: action_help: Allow connections on a port api: POST /firewall/port arguments: protocol: help: "Protocol type to allow (TCP/UDP/Both)" choices: - TCP - UDP - Both default: TCP port: help: Port or range of ports to open extra: pattern: &pattern_port_or_range - !!str ((^|(?!\A):)([0-9]{1,4}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])){1,2}?$ - "pattern_port_or_range" -4: full: --ipv4-only help: Only add a rule for IPv4 connections action: store_true -6: full: --ipv6-only help: Only add a rule for IPv6 connections action: store_true --no-upnp: help: Do not add forwarding of this port with UPnP action: store_true --no-reload: help: Do not reload firewall rules action: store_true ### firewall_disallow() disallow: action_help: Disallow connections on a port api: DELETE /firewall/port arguments: protocol: help: "Protocol type to allow (TCP/UDP/Both)" choices: - TCP - UDP - Both default: TCP port: help: Port or range of ports to close extra: pattern: *pattern_port_or_range -4: full: --ipv4-only help: Only remove the rule for IPv4 connections action: store_true -6: full: --ipv6-only help: Only remove the rule for IPv6 connections action: store_true --upnp-only: help: Only remove forwarding of this port with UPnP action: store_true --no-reload: help: Do not reload firewall rules action: store_true ### firewall_upnp() upnp: action_help: Manage port forwarding using UPnP api: GET /firewall/upnp arguments: action: choices: - enable - disable - status - reload nargs: "?" default: status --no-refresh: help: Do not refresh port forwarding action: store_true ### firewall_stop() stop: action_help: Stop iptables and ip6tables api: DELETE /firewall ############################# # DynDNS # ############################# dyndns: category_help: Subscribe and Update DynDNS Hosts actions: ### dyndns_subscribe() subscribe: action_help: Subscribe to a DynDNS service api: POST /dyndns arguments: --subscribe-host: help: Dynette HTTP API to subscribe to default: "dyndns.yunohost.org" -d: full: --domain help: Full domain to subscribe with extra: pattern: *pattern_domain -k: full: --key help: Public DNS key ### dyndns_update() update: action_help: Update IP on DynDNS platform api: PUT /dyndns arguments: --dyn-host: help: Dynette DNS server to inform default: "dyndns.yunohost.org" -d: full: --domain help: Full domain to update extra: pattern: *pattern_domain -k: full: --key help: Public DNS key -i: full: --ipv4 help: IP address to send -f: full: --force help: Force the update (for debugging only) action: store_true -D: full: --dry-run help: Only display the generated zone action: store_true -6: full: --ipv6 help: IPv6 address to send ### dyndns_installcron() installcron: action_help: Install IP update cron api: POST /dyndns/cron ### dyndns_removecron() removecron: action_help: Remove IP update cron api: DELETE /dyndns/cron ############################# # Tools # ############################# tools: category_help: Specific tools actions: ### tools_adminpw() adminpw: action_help: Change password of admin and root users api: PUT /adminpw arguments: -n: full: --new-password extra: password: ask_new_admin_password pattern: *pattern_password required: True comment: good_practices_about_admin_password ### tools_maindomain() maindomain: action_help: Check the current main domain, or change it arguments: -n: full: --new-main-domain help: Change the current main domain extra: pattern: *pattern_domain ### tools_postinstall() postinstall: action_help: YunoHost post-install api: POST /postinstall configuration: # We need to be able to run the postinstall without being authenticated, otherwise we can't run the postinstall authenticate: false arguments: -d: full: --domain help: YunoHost main domain extra: ask: ask_main_domain pattern: *pattern_domain required: True -p: full: --password help: YunoHost admin password extra: password: ask_new_admin_password pattern: *pattern_password required: True comment: good_practices_about_admin_password --ignore-dyndns: help: Do not subscribe domain to a DynDNS service action: store_true --force-password: help: Use this if you really want to set a weak password action: store_true ### tools_update() update: action_help: YunoHost update api: PUT /update arguments: --apps: help: Fetch the application list to check which apps can be upgraded action: store_true --system: help: Fetch available system packages upgrades (equivalent to apt update) action: store_true ### tools_upgrade() upgrade: action_help: YunoHost upgrade api: PUT /upgrade arguments: --apps: help: List of apps to upgrade (all by default) nargs: "*" --system: help: Upgrade only the system packages action: store_true ### tools_shell() shell: action_help: Launch a development shell arguments: -c: help: python command to execute full: --command ### tools_shutdown() shutdown: action_help: Shutdown the server api: PUT /shutdown arguments: -f: help: skip the shutdown confirmation full: --force action: store_true ### tools_reboot() reboot: action_help: Reboot the server api: PUT /reboot arguments: -f: help: skip the reboot confirmation full: --force action: store_true ### tools_regen_conf() regen-conf: action_help: Regenerate the configuration file(s) api: PUT /tools/regenconf arguments: names: help: Categories to regenerate configuration of (all by default) nargs: "*" metavar: NAME -d: full: --with-diff help: Show differences in case of configuration changes action: store_true -f: full: --force help: Override all manual modifications in configuration files action: store_true -n: full: --dry-run help: Show what would have been regenerated action: store_true -p: full: --list-pending help: List pending configuration files and exit action: store_true ### tools_versions() versions: action_help: Display YunoHost's packages versions api: GET /versions subcategories: migrations: subcategory_help: Manage migrations actions: ### tools_migrations_list() list: action_help: List migrations api: GET /migrations arguments: --pending: help: list only pending migrations action: store_true --done: help: list only migrations already performed action: store_true ### tools_migrations_migrate() migrate: action_help: Run migrations api: POST /migrations/migrate arguments: targets: help: Migrations to run (all pendings by default) nargs: "*" --skip: help: Skip specified migrations (to be used only if you know what you are doing) action: store_true --force-rerun: help: Re-run already-ran specified migration (to be used only if you know what you are doing) action: store_true --auto: help: Automatic mode, won't run manual migrations (to be used only if you know what you are doing) action: store_true --accept-disclaimer: help: Accept disclaimers of migrations (please read them before using this option) action: store_true ### tools_migrations_state() state: action_help: Show current migrations state api: GET /migrations/state ############################# # Hook # ############################# hook: category_help: Manage hooks actions: ### hook_add() add: action_help: Store hook script to filesystem arguments: app: help: App to link with file: help: Script to add ### hook_remove() remove: action_help: Remove hook scripts from filesystem arguments: app: help: Scripts related to app will be removed ### hook_info() info: action_help: Get information about a given hook api: GET /hooks// arguments: action: help: Action name name: help: Hook name ### hook_list() list: action_help: List available hooks for an action api: GET /hooks/ arguments: action: help: Action name -l: full: --list-by help: Property to list hook by choices: - name - priority - folder default: name -i: full: --show-info help: Show hook information action: store_true ### hook_callback() callback: action_help: Execute all scripts binded to an action api: POST /hooks/ arguments: action: help: Action name -n: full: --hooks help: List of hooks names to execute nargs: "*" -a: full: --args help: Ordered list of arguments to pass to the scripts nargs: "*" -q: full: --no-trace help: Do not print each command that will be executed action: store_true -d: full: --chdir help: The directory from where the scripts will be executed ### hook_exec() exec: action_help: Execute hook from a file with arguments arguments: path: help: Path of the script to execute -a: full: --args help: Ordered list of arguments to pass to the script nargs: "*" --raise-on-error: help: Raise if the script returns a non-zero exit code action: store_true -q: full: --no-trace help: Do not print each command that will be executed action: store_true -d: full: --chdir help: The directory from where the script will be executed ############################# # Log # ############################# log: category_help: Manage debug logs actions: ### log_list() list: action_help: List logs api: GET /logs arguments: category: help: Log category to display (default operations), could be operation, history, package, system, access, service or app nargs: "*" -l: full: --limit help: Maximum number of logs type: int -d: full: --with-details help: Show additional infos (e.g. operation success) but may significantly increase command time. Consider using --limit in combination with this. action: store_true ### log_display() display: action_help: Display a log content api: GET /logs/display arguments: path: help: Log file which to display the content -n: full: --number help: Number of lines to display default: 50 type: int --share: help: Share the full log using yunopaste action: store_true -i: full: --filter-irrelevant help: Do not show some lines deemed not relevant (like set +x or helper argument parsing) action: store_true ############################# # Diagnosis # ############################# diagnosis: category_help: Look for possible issues on the server actions: list: action_help: List diagnosis categories api: GET /diagnosis/list show: action_help: Show most recents diagnosis results api: GET /diagnosis/show arguments: categories: help: Diagnosis categories to display (all by default) nargs: "*" --full: help: Display additional information action: store_true --issues: help: Only display issues action: store_true --share: help: Share the logs using yunopaste action: store_true --human-readable: help: Show a human-readable output action: store_true run: action_help: Run diagnosis api: POST /diagnosis/run arguments: categories: help: Diagnosis categories to run (all by default) nargs: "*" --force: help: Ignore the cached report even if it is still 'fresh' action: store_true --except-if-never-ran-yet: help: Don't run anything if diagnosis never ran yet ... (this is meant to be used by the webadmin) action: store_true --email: help: Send an email to root with issues found (this is meant to be used by cron job) action: store_true ignore: action_help: Configure some diagnosis results to be ignored and therefore not considered as actual issues api: POST /diagnosis/ignore arguments: --add-filter: help: "Add a filter. The first element should be a diagnosis category, and other criterias can be provided using the infos from the 'meta' sections in 'yunohost diagnosis show'. For example: 'dnsrecords domain=yolo.test category=xmpp'" nargs: "*" metavar: CRITERIA --remove-filter: help: Remove a filter (it should be an existing filter as listed with --list) nargs: "*" metavar: CRITERIA --list: help: List active ignore filters action: store_true get: action_help: Low-level command to fetch raw data and status about a specific diagnosis test api: GET /diagnosis/item/ arguments: category: help: Diagnosis category to fetch results from item: help: "List of criteria describing the test. Must correspond exactly to the 'meta' infos in 'yunohost diagnosis show'" metavar: CRITERIA nargs: "*"