Application Metadata
The appinfo/info.xml contains metadata about the application. In this section, you will find a complete example configuration, along with an explanation of what each of file’s elements.
<?xml version="1.0"?>
<info>
<!-- Mandatory fields -->
<id>yourapp</id>
<name>Your App</name>
<description>A description of your application</description>
<version>1.0</version>
<licence>AGPL</licence>
<screenshot small-thumbnail="https://raw.githubusercontent.com/foo/yourapp/master/screenshots/thumb.png"
>https://raw.githubusercontent.com/foo/yourapp/master/screenshots/big.png</screenshot>
<!-- Category values available at: https://marketplace.owncloud.com/ajax/categories -->
<category>A category for the application. </category>
<summary>A summary of your application's purpose (max 90 chars)</summary>
<types>
<filesystem/>
</types>
<documentation>
<user>https://doc.owncloud.com/webui/next/classic_ui/pim/index.html</user>
<admin>https://doc.owncloud.com/server/latest/admin_manual/configuration_server/occ_command.html?highlight=contact#dav-commands</admin>
<developer>https://github.com/owncloud/contacts/blob/master/README.md</developer>
</documentation>
<author>Your Name</author>
<namespace>YourAppNamespace</namespace>
<website>https://owncloud.com</website>
<bugs>https://github.com/owncloud/yourapp/issues</bugs>
<repository type="git">https://github.com/owncloud/yourapp.git</repository>
<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>
<repair-steps>
<install>
<step>OCA\YourAppNamespace\FilesEncryption\Migration\Install</step>
</install>
<pre-migration>
<step>OCA\YourAppNamespace\FilesEncryption\Migration\PreMigration</step>
</pre-migration>
<post-migration>
<step>OCA\YourAppNamespace\FilesEncryption\Migration\PostMigration</step>
</post-migration>
<live-migration>
<step>OCA\YourAppNamespace\FilesEncryption\Migration\LiveMigration</step>
</live-migration>
<uninstall>
<step>OCA\YourAppNamespace\FilesEncryption\Migration\Uninstall</step>
</uninstall>
</repair-steps>
<!-- For registering panels -->
<settings>
<admin>OCA\YourAppNamespace\Settings\Admin</admin>
<personal>OCA\YourAppNamespace\Settings\Personal</personal>
</settings>
<!-- For registering settings sections -->
<settings-sections>
<admin>OCA\YourAppNamespace\Settings\AdminSection</admin>
<personal>OCA\YourAppNamespace\Settings\PersonalSection</personal>
</settings-sections>
<!-- deprecated, but kept for reference -->
<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>
id
Required. This field contains the internal application name, and has to be the same as the folder name of the application. This id needs to be unique in ownCloud, meaning no other application should have this id. This value also represents the URL your application is available on the marketplace.
name
Required. This is the human-readable name (or title) of the application that will be displayed in the application overview page.
description
Required. The description provides all the necessary information about the application, and is shown in the application overview page. Don’t get lost in technical details, focus on the benefits which the application offers. You can use markdown to format the description.
Max. 4000 characters. |
licence
Required. The sets the application’s license. This license must be compatible with the AGPL and must not be proprietary.
Two good examples are:
-
AGPL 3 (recommended)
-
MIT
If a proprietary/non-AGPL compatible license must be used, then you have to use the ownCloud Enterprise Edition.
namespace
Required if routes.php
returns an array. For example, if your
application is namespaced, e.g.,
\\OCA\\MyApp\\Controller\\PageController
, then the required namespace
value is MyApp
. If a namespace is not provided, the application tries
to default to the first letter upper-cased application id, e.g., myapp
would be tried under Myapp
.
category
The ownCloud Marketplace category where you want to publish the application. The following categories are available:
Category Name | Value to Use |
---|---|
Automation |
automation |
Collaboration |
collaboration |
Customization |
customization |
External plugins |
external-plugins |
Games |
games |
Integration |
integration |
Multimedia |
multimedia |
Productivity |
productivity |
Security |
security |
Storage |
storage |
Tools |
tools |
For publishing themes the category tag must be present — but empty — as in the example below.
|
summary
Required. Provide a short application description (max. 90 chars). This gets displayed below the product title and on the product tiles. It is mandatory since ownCloud 10.0.0.
types
ownCloud supports five types. These are:
-
prelogin
: applications which need to load on the login page -
filesystem
: applications which provide filesystem functionality (e.g., file-sharing applications) -
authentication
: applications which provide authentication backends -
logging
: applications which implement a logging system -
prevent_group_restriction
: applications which can not be enabled for specific groups (e.g., notifications app).
prevent_group_restriction
was introduced with ownCloud 9.0. It can be
used in earlier versions, but the functionality will be ignored.
Due to technical reasons applications of any type listed above can not be enabled for specific groups only.
documentation
Required. Link to admin, user, and developer documentation.
Common places are: (where $name
is the name of your app, e.g.
$name=theapp
)
$DOCUMENTATION_BASE = 'https://doc.owncloud.com';
$DOCUMENTATION_DEVELOPER = $DOCUMENTATION_BASE.'/server/'.$VERSIONS_SERVER_MAJOR_DEV_DOCS.'/developer_manual/$name/';`
$DOCUMENTATION_ADMIN = $DOCUMENTATION_BASE.'/server/'.$VERSIONS_SERVER_MAJOR_STABLE.'/admin_manual/$name/';
$DOCUMENTATION_USER = $DOCUMENTATION_BASE.'/webui/next/classic_ui/$name/';
These places are maintained at https://github.com/owncloud/documentation/. Another popular starting point for developer documentation is the README.md in GitHub.
Dependencies
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 application cannot be installed.
database
Each supported database has to be listed 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.
command
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.
lib
Defines a required PHP extension with a 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
os
Defines the required target operating system the application can run on. Valid values are as returned by the php function php_uname.
owncloud
Defines the minimum and maximum versions of ownCloud core.
This will be mandatory from version 11 onwards. |
repair-steps
Deprecated
The following sections are listed just for reference and should not be used because:
-
public/remote: Use api instead because you’ll have to use the external API, which is known to be buggy. It only works properly with GET/POST requests.
-
standalone/default_enable: They tell core what do on setup, you will not be able to even activate your application if it has those entries.
This should be replaced by a config file inside core.
public
Used to provide a public interface (requires no login) for the
application. The id is appended to the URL /owncloud/index.php/public
.
Example with id set to `calendar':
/owncloud/index.php/public/calendar
Also take a look at the external API.
remote
Same as public, but requires login. The id is appended to the URL
/owncloud/index.php/remote
. Example with id set to `calendar':
/owncloud/index.php/remote/calendar
Also take a look at the external API.