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

<node name="/org/chromium/AuthPolicy"
      xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0">
  <interface name="org.chromium.AuthPolicy">
    <!--
         AuthenticateUser:
         @auth_user_request_blob: Serialized AuthenticateUserRequest protobuf.
         @password_fd: File descriptor of the user's password.
         @error_code: Returned error code, see ErrorType enum.
         @account_info_blob: Serialized ActiveDirectoryAccountInfo protobuf.

         Authenticates the user with an Active Directory domain.
    -->
    <method name="AuthenticateUser">
      <arg name="auth_user_request_blob" type="ay" direction="in" />
      <arg name="password_fd" type="h" direction="in"/>
      <arg name="error_code" type="i" direction="out"/>
      <arg name="account_info_blob" type="ay" direction="out" />
      <annotation name="org.chromium.DBus.Method.Kind" value="simple"/>
    </method>

    <!--
         GetUserStatus:
         @get_status_request_blob: Serialized GetUserStatusRequest protobuf.
         @error_code: Returned error code, see ErrorType enum.
         @user_status_blob: Serialized ActiveDirectoryUserStatus protobuf.

         Gets the status of the given Active Directory user account.
    -->
    <method name="GetUserStatus">
      <arg name="get_status_request_blob" type="ay" direction="in" />
      <arg name="error_code" type="i" direction="out"/>
      <arg name="user_status_blob" type="ay" direction="out" />
      <annotation name="org.chromium.DBus.Method.Kind" value="simple"/>
    </method>

    <!--
         GetUserKerberosFiles:
         @account_id: Object GUID of the user account.
         @error_code: Returned error code, see ErrorType enum.
         @kerberos_files_blob: Serialized KerberosFiles protobuf.

         Gets the currently logged-in user's Kerberos credential cache (krb5cc)
         and configuration (krb5.conf) files from authpolicyd.
         Returns ERROR_NONE and a blob with empty files if the krb5cc file does
         not exist, e.g. since AuthenticateUser has not been called yet or
         failed since the user was offline during authentication.
         Returns ERROR_LOCAL_IO if the krb5cc file exists, but any file could
         not be read.
    -->
    <method name="GetUserKerberosFiles">
      <arg name="account_id" type="s" direction="in"/>
      <arg name="error_code" type="i" direction="out"/>
      <arg name="kerberos_files_blob" type="ay" direction="out" />
      <annotation name="org.chromium.DBus.Method.Kind" value="simple"/>
    </method>

    <!--
         UserKerberosFilesChanged:

         Signal emitted if either the currently logged-in user's Kerberos
         credential cache (krb5cc) or configuration (krb5.conf) files change.
    -->
    <signal name="UserKerberosFilesChanged"/>

    <!--
         JoinADDomain:
         @join_domain_request_blob: Serialized JoinDomainRequest protobuf.
         @password_fd: File descriptor of the user's password.
         @error_code: Returned error code, see ErrorType enum.
         @machine_domain: Domain that the machine was joined to. Should match
            the one in the JoinDomainRequest if specified and the user's domain
            otherwise.

         Joins the given machine with an Active Directory domain.
    -->
    <method name="JoinADDomain">
      <arg name="join_domain_request_blob" type="ay" direction="in" />
      <arg name="password_fd" type="h" direction="in"/>
      <arg name="error_code" type="i" direction="out"/>
      <arg name="joined_domain" type="s" direction="out"/>
      <annotation name="org.chromium.DBus.Method.Kind" value="simple"/>
    </method>

    <!--
         RefreshUserPolicy:
         @account_id: Object GUID of the user account to fetch policy for.
         @error_code: Returned error code, see ErrorType enum.

         Retrieves user policy for the currently authenticated user and sends it
         to Session Manager. Must be authenticated, see |AuthenticateUser|.
    -->
    <method name="RefreshUserPolicy">
      <arg name="account_id" type="s" direction="in" />
      <arg name="error_code" type="i" direction="out"/>
      <annotation name="org.chromium.DBus.Method.Kind" value="async"/>
    </method>

    <!--
         RefreshDevicePolicy:
         @error_code: Returned error code, see ErrorType enum.

         Retrieves device policy and sends it to Session Manager. Must be joined
         to an Active Directory domain, see |JoinADDomain|.
    -->
    <method name="RefreshDevicePolicy">
      <arg name="error_code" type="i" direction="out"/>
      <annotation name="org.chromium.DBus.Method.Kind" value="async"/>
    </method>

    <!--
         SetDefaultLogLevel:
         @level: Default log level, 0=quiet, 1=taciturn, 2=chatty, 3=verbose.
         @error_message: Error message, empty if no error occurred.

         Sets the default log level for the daemon. The log level persists
         between authpolicyd restarts, but gets wiped on reboot. The defaults
         can be overridden in a fine-grained manner with a json flags file
         (requires a writeable rootfs), see authpolicy_flags.h.
    -->
    <method name="SetDefaultLogLevel">
      <arg name="level" type="i" direction="in"/>
      <arg name="error_message" type="s" direction="out"/>
      <annotation name="org.chromium.DBus.Method.Kind" value="simple"/>
    </method>
  </interface>
</node>
