<!DOCTYPE node PUBLIC
"-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">

<!--
 Copyright (C) 2015 Red Hat, Inc.

 This library is free software; you can redistribute it and/or
 modify it under the terms of the GNU Lesser General Public
 License as published by the Free Software Foundation; either
 version 2 of the License, or (at your option) any later version.

 This library is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 Lesser General Public License for more details.

 You should have received a copy of the GNU Lesser General
 Public License along with this library; if not, write to the
 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 Boston, MA 02110-1301, USA.

 Author: Alexander Larsson <alexl@redhat.com>
-->

<node name="/" xmlns:doc="http://www.freedesktop.org/dbus/1.0/doc.dtd">
  <!--
      org.freedesktop.portal.Documents:
      @short_description: Document portal

      The document portal allows to make files from the outside world
      available to sandboxed applications in a controlled way.

      Exported files will be made accessible to the application via
      a fuse filesystem that gets mounted at /run/user/$UID/doc/. The
      filesystem gets mounted both outside and inside the sandbox, but
      the view inside the sandbox is restricted to just those files
      that the application is allowed to access.

      Individual files will appear at /run/user/$UID/doc/$DOC_ID/filename,
      where $DOC_ID is the ID of the file in the document store. It is
      returned by the org.freedesktop.portal.Documents.Add() and
      org.freedesktop.portal.Documents.AddNamed() calls.

      The permissions that the application has for a document store entry
      (see org.freedesktop.portal.Documents.GrantPermissions()) are reflected
      in the POSIX mode bits in the fuse filesystem.

      The D-Bus interface for the document portal is available under the
      bus name org.freedesktop.portal.Documents and the object path
      /org/freedesktop/portal/documents.
 
      This documentation describes version 3 of this interface.
  -->
  <interface name='org.freedesktop.portal.Documents'>
    <property name="version" type="u" access="read"/>

    <!--
        GetMountPoint:
        @path: the path at which the fuse filesystem is mounted

        Returns the path at which the document store fuse filesystem
        is mounted. This will typically be /run/user/$UID/doc/.
    -->
    <method name="GetMountPoint">
      <arg type='ay' name='path' direction='out'/>
    </method>

    <!--
        Add:
        @o_path_fd: open file descriptor for the file to add
        @reuse_existing: whether to reuse an existing document store entry for the file
        @persistent: whether to add the file only for this session or permanently
        @doc_id: the ID of the file in the document store

        Adds a file to the document store. The file is passed in the
        form of an open file descriptor to prove that the caller has
        access to the file.
    -->
    <method name="Add">
      <annotation name="org.gtk.GDBus.C.UnixFD" value="true"/>
      <arg type='h' name='o_path_fd' direction='in'/>
      <arg type='b' name='reuse_existing' direction='in'/>
      <arg type='b' name='persistent' direction='in'/>
      <arg type='s' name='doc_id' direction='out'/>
    </method>

    <!--
        AddNamed:
        @o_path_parent_fd: open file descriptor for the parent directory
        @filename: the basename for the file
        @reuse_existing: whether to reuse an existing document store entry for the file
        @persistent: whether to add the file only for this session or permanently
        @doc_id: the ID of the file in the document store

        Creates an entry in the document store for writing a new file.
    -->
    <method name="AddNamed">
      <annotation name="org.gtk.GDBus.C.UnixFD" value="true"/>
      <arg type='h' name='o_path_parent_fd' direction='in'/>
      <arg type='ay' name='filename' direction='in'/>
      <arg type='b' name='reuse_existing' direction='in'/>
      <arg type='b' name='persistent' direction='in'/>
      <arg type='s' name='doc_id' direction='out'/>
    </method>

    <!--
        AddFull:
        @o_path_fds: open file descriptors for the files to export
        @flags: flags, 1 == reuse_existing, 2 == persistent, 4 == as-needed-by-app
        @app_id: an application ID, or empty string
        @permissions: the permissions to grant, possible values are 'read', 'write', 'grant-permissions' and 'delete'
        @doc_ids: the IDs of the files in the document store
        @extra_info: Extra info returned

        Adds multiple files to the document store. The file is passed in the
        form of an open file descriptor to prove that the caller has
        access to the file.

        If the as-needed-by-app flag is given, files will only be added to
        the document store if the application does not already have access to them.
        For files that are not added to the document store, the doc_ids array will
        contain an empty string.

        Additionally, if app_id is specified, it will be given the permissions
        listed in GrantPermission.

        The method also returns some extra info that can be used to avoid
        multiple roundtrips. For now it only contains as "mountpoint", the
        fuse mountpoint of the document portal.

        This method was added in version 2 of the org.freedesktop.portal.Documents interface.
    -->
    <method name="AddFull">
      <annotation name="org.gtk.GDBus.C.UnixFD" value="true"/>
      <arg type='ah' name='o_path_fds' direction='in'/>
      <arg type='u' name='flags' direction='in'/>
      <arg type='s' name='app_id' direction='in'/>
      <arg type='as' name='permissions' direction='in'/>
      <arg type='as' name='doc_ids' direction='out'/>
      <arg type='a{sv}' name='extra_out' direction='out'/>
    </method>

    <!--
        AddNamedFull:
        @o_path_fds: open file descriptor for the parent directory
        @filename: the basename for the file
        @flags: flags, 1 == reuse_existing, 2 == persistent, 4 == as-needed-by-app
        @app_id: an application ID, or empty string
        @permissions: the permissions to grant, possible values are 'read', 'write', 'grant-permissions' and 'delete'
        @doc_id: the ID of the file in the document store
        @extra_info: Extra info returned

        Creates an entry in the document store for writing a new file.

        If the as-needed-by-app flag is given, file will only be added to
        the document store if the application does not already have access to it.
        For file that is not added to the document store, the doc_id will
        contain an empty string.

        Additionally, if app_id is specified, it will be given the permissions
        listed in GrantPermission.

        The method also returns some extra info that can be used to avoid
        multiple roundtrips. For now it only contains as "mountpoint", the
        fuse mountpoint of the document portal.

        This method was added in version 3 of the org.freedesktop.portal.Documents interface.
    -->
    <method name="AddNamedFull">
      <annotation name="org.gtk.GDBus.C.UnixFD" value="true"/>
      <arg type='h' name='o_path_fd' direction='in'/>
      <arg type='ay' name='filename' direction='in'/>
      <arg type='u' name='flags' direction='in'/>
      <arg type='s' name='app_id' direction='in'/>
      <arg type='as' name='permissions' direction='in'/>
      <arg type='s' name='doc_id' direction='out'/>
      <arg type='a{sv}' name='extra_out' direction='out'/>
    </method>

    <!--
        GrantPermissions:
        @doc_id: the ID of the file in the document store
        @app_id: the ID of the application to which permissions are granted
        @permissions: the permissions to grant, possible values are 'read', 'write', 'grant-permissions' and 'delete'

        Grants access permissions for a file in the document store
        to an application.

        This call is available inside the sandbox if the application
        has the 'grant-permissions' permission for the document.
    -->
    <method name="GrantPermissions">
      <arg type='s' name='doc_id' direction='in'/>
      <arg type='s' name='app_id' direction='in'/>
      <arg type='as' name='permissions' direction='in'/>
    </method>

    <!--
        RevokePermissions:
        @doc_id: the ID of the file in the document store
        @app_id: the ID of the application from which permissions are revoked
        @permissions: the permissions to revoke, possible values are 'read', 'write', 'grant-permissions' and 'delete'

        Revokes access permissions for a file in the document store
        from an application.

        This call is available inside the sandbox if the application
        has the 'grant-permissions' permission for the document.
    -->
    <method name="RevokePermissions">
      <arg type='s' name='doc_id' direction='in'/>
      <arg type='s' name='app_id' direction='in'/>
      <arg type='as' name='permissions' direction='in'/>
    </method>

    <!--
        Delete:
        @doc_id: the ID of the file in the document store

        Removes an entry from the document store. The file itself is
        not deleted.

        This call is available inside the sandbox if the application
        has the 'delete' permission for the document.
    -->
    <method name="Delete">
      <arg type='s' name='doc_id' direction='in'/>
    </method>

    <!--
        Lookup:
        @filename: a path in the host filesystem
        @doc_id: the ID of the file in the document store, or '' if the file is not in the document store

        Looks up the document ID for a file.

        This call is not available inside the sandbox.
    -->
    <method name="Lookup">
      <arg type='ay' name='filename' direction='in'/>
      <arg type='s' name='doc_id' direction='out'/>
    </method>

    <!--
        Info:
        @doc_id: the ID of the file in the document store
        @path: the path for the file in the host filesystem
        @apps: a dictionary mapping application IDs to the permissions for that application

        Gets the filesystem path and application permissions for a document store
        entry.

        This call is not available inside the sandbox.
    -->
    <method name="Info">
      <arg type='s' name='doc_id' direction='in'/>
      <arg type='ay' name='path' direction='out'/>
      <arg type='a{sas}' name='apps' direction='out'/>
    </method>

    <!--
        List:
        @app_id: an application ID, or '' to list all documents
        @docs: a dictionary mapping document IDs to their filesystem path

        Lists documents in the document store for an application (or for
        all applications).

        This call is not available inside the sandbox.
    -->
    <method name="List">
      <arg type='s' name='app_id' direction='in'/>
      <arg type='a{say}' name='docs' direction='out'/>
    </method>
  </interface>
</node>
