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.

version

This sets the version of your application.

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.

author

Required. The name of the application’s author or authors.

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.

<category></category>

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.

website

Required. A link to the project’s web page.

repository

Required. A link to the version control repository.

bugs

Required. A link to the bug tracker, if any.

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.

php

Defines the minimum and the maximum version of PHP required to run this application.

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

Defines when to execute repair steps, both for ownCloud and for installed apps.

pre-migration

Execute repair steps before a database migration.

post-migration

Execute repair steps after a database migration.

live-migration

Execute repair steps as background jobs, asynchronously after migration, in live operations

install

Execute repair steps during installation.

uninstall

Execute repair steps during uninstallation.

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.

standalone

Can be set to true to indicate that this application is a web application. This can be used to tell GNOME Web for instance to treat this like a native application.

default_enable

Core applications only: Used to tell ownCloud to enable them after the installation.

shipped

Core applications only: Used to tell ownCloud that the application 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!