<?xml version="1.0" encoding="UTF-8"?>

<node name="/">
  <!-- Calls for tags/keywords for any service object or file. -->
  <interface name="org.freedesktop.Tracker.Keywords">

    <!-- Gets a list of all unique keywords/tags that are in use by
	 the specified service irrespective of the uri or id of the
	 entity. Returns an array of string arrays in format [Keyword,
	 KeywordCount].
      -->
    <method name="GetList">
      <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
      <arg type="s" name="service_type" direction="in" />
      <arg type="aas" name="keywords" direction="out" />
    </method>

    <!-- Gets all unique keywords/tags for specified service and id. -->
    <method name="Get">
      <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
      <arg type="s" name="service_type" direction="in" />
      <arg type="s" name="uri" direction="in" />
      <arg type="as" name="keywords" direction="out" />
    </method>

    <!-- Adds new keywords/tags for specified service and id -->
    <method name="Add">
      <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
      <arg type="s" name="service_type" direction="in" />
      <arg type="s" name="uri" direction="in" />
      <arg type="as" name="keywords" direction="in" />
    </method>

    <!-- Removes all specified keywords/tags for specified service and
	 id.
      -->
    <method name="Remove">
      <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
      <arg type="s" name="service_type" direction="in" />
      <arg type="s" name="uri" direction="in" />
      <arg type="as" name="keywords" direction="in" />
    </method>

    <!-- Removes all keywords/tags for specified service and id. -->
    <method name="RemoveAll">
      <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
      <arg type="s" name="service_type" direction="in" />
      <arg type="s" name="uri" direction="in" />
    </method>

    <!-- Searches specified service for matching keyword/tag and
	 returns an array of matching id values for the service.
      --> 
    <method name="Search">
      <annotation name="org.freedesktop.DBus.Deprecated" value="true"/>
      <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
      <arg type="i" name="live_query_id" direction="in" />
      <arg type="s" name="service_type" direction="in" />
      <arg type="as" name="keywords" direction="in" />
      <arg type="i" name="offset" direction="in" />
      <arg type="i" name="max_hits" direction="in" />
      <arg type="as" name="result" direction="out" />
    </method>

    <!-- emitted whenever tags on an entity change -->
    <signal name="KeywordAdded">
      <arg type="s" name="service"/>
      <arg type="s" name="uri" />
      <arg type="s" name="keyword" />
    </signal>

    <signal name="KeywordRemoved">
      <arg type="s" name="service"/>
      <arg type="s" name="uri" />
      <arg type="s" name="keyword" />
    </signal>
  </interface>
</node>
