<?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="async"/>
    </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>

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

         Changes machine password. For testing usage only.
    -->
    <method name="ChangeMachinePasswordForTesting">
      <arg name="error_code" type="i" direction="out"/>
      <annotation name="org.chromium.DBus.Method.Kind" value="simple"/>
    </method>
  </interface>
</node>
