appinfo/info.xml contains metadata about the app:
<?xml version="1.0"?> <info> <id>yourappname</id> <name>Your App</name> <description>Your App description</description> <version>1.0</version> <licence>AGPL</licence> <author>Your Name</author> <namespace>YourAppsNamespace</namespace> <types> <filesystem/> </types> <documentation> <user>https://docs.nextcloud.org</user> <admin>https://docs.nextcloud.org</admin> <developer>https://docs.nextcloud.org</developer> </documentation> <category>tool</category> <website>https://example.org</website> <bugs>https://github.com/nextcloud/theapp/issues</bugs> <repository type="git">https://github.com/nextcloud/theapp.git</repository> <ocsid>1234</ocsid> <dependencies> <php min-version="5.4" max-version="5.5"/> <database>sqlite</database> <database>mysql</database> <command os="linux">grep</command> <command os="windows">notepad.exe</command> <lib min-version="1.2">xml</lib> <lib max-version="2.0">intl</lib> <lib>curl</lib> <os>Linux</os> <owncloud min-version="6.0.4" max-version="8"/> </dependencies> <settings> <admin-section>OCA\YourAppsNamespace\Settings\AdminSection</admin-section> <admin>OCA\YourAppsNamespace\Settings\AdminSettings</admin> </settings> <!-- deprecated, just for reference --> <requiremin>5</requiremin> <public> <file id="caldav">appinfo/caldav.php</file> </public> <remote> <file id="caldav">appinfo/caldav.php</file> </remote> <standalone /> <default_enable /> <shipped>true</shipped> <!-- end deprecated --> </info>
Required: This field contains the internal app name, and has to be the same as the folder name of the app. This id needs to be unique in Nextcloud, meaning no other app should have this id.
Required: This is the human-readable name/title of the app that will be displayed in the app overview page.
Required: This contains the description of the app which will be shown in the app overview page.
Contains the version of your app.
Required: The licence of the app. This licence must be compatible with the AGPL and must not be proprietary, for instance:
- AGPL 3 (recommended)
Required if routes.php returns an array. If your app is namespaced like \OCA\MyApp\Controller\PageController the required namespace value is MyApp. If not given it tries to default to the first letter upper cased app id, e.g. myapp would be tried under Myapp
Nextcloud allows to specify four kind of
types. Currently supported
- prelogin: apps which need to load on the login page
- filesystem: apps which provide filesystem functionality (e.g. files sharing app)
- authentication: apps which provide authentication backends
- logging: apps which implement a logging system
- prevent_group_restriction: apps which can not be enabled for specific groups (e.g. notifications app).
Due to technical reasons apps of any type listed above can not be enabled for specific groups only.
Link to ‘admin’, ‘user’, ‘developer’ documentation
Link to project web page
Link to the version control repo
Link to the bug tracker
Category on the app store. Can be one of the following:
The app’s id on the app store, e.g.: https://apps.owncloud.com/content/show.php/QOwnNotes?content=168497 would have the ocsid 168497. If given helps users to install and update the same app from the app store
All tags within the dependencies tag define a set of requirements which have to be fulfilled in order to operate properly. As soon as one of these requirements is not met the app cannot be installed.
Defines the minimum and the maximum version of php which is required to run this app.
Each supported database has to be listed in here. Valid values are sqlite, mysql, pgsql, oci and mssql. In the future it will be possible to specify versions here as well. In case no database is specified it is assumed that all databases are supported.
Defines a command line tool to be available. With the attribute ‘os’ the required operating system for this tool can be specified. Valid values for the ‘os’ attribute are as returned by the php function php_uname.
Defines a required php extension with required minimum and/or maximum version. The names for the libraries have to match the result as returned by the php function get_loaded_extensions. The explicit version of an extension is read from phpversion - with some exception as to be read up in the code base
Defines the required target operating system the app can run on. Valid values are as returned by the php function php_uname.
Required: Defines minimum and maximum versions of the Nextcloud core. In case undefined the values will be taken from the tag requiremin.
Currently this tag is also used to check for the nextcloud version number. Thereby the following “translation” is made:
- ownCloud 9.0 matches Nextcloud 9
- ownCloud 9.1 matches Nextcloud 10
- ownCloud 9.2 matches Nextcloud 11
When your app has admin settings, this is the place to register the corresponding classes.
In case the app needs to register a new section on the admin settings page, it needs to implement the OCPSettingsISection interface. The implementing class needs to be specified here.
In case the app has its own admin related settings, it needs to implement the OCPSettingsISettings interface. The implementing class needs to be specified here.
The following sections are just listed for reference and should not be used because
Deprecated in favor of the <dependencies> tag.
Used to provide a public interface (requires no login) for the app. The id is appended to the URL /index.php/public. Example with id set to ‘calendar’:
Also take a look at External API.
Same as public but requires login. The id is appended to the URL /index.php/remote. Example with id set to ‘calendar’:
Also take a look at External API.
Can be set to true to indicate that this app is a webapp. This can be used to tell GNOME Web for instance to treat this like a native application.
Core apps only: Used to tell Nextcloud to enable them after the installation.
Core apps only: Used to tell Nextcloud that the app is in the standard release.
Please note that if this attribute is set to FALSE or not set at all, every time you disable the application, all the files of the application itself will be REMOVED from the server!