<node>
    <interface name="org.openprinting.PrintBackend">
        <signal name="PrinterAdded">
            <arg name="printer_id" direction="out" type="s"/>
            <arg name="printer_name" direction="out" type="s" />
            <arg name="printer_info" direction="out" type="s" />
            <arg name="printer_location" direction="out" type="s" />
            <arg name="printer_make_and_model" direction="out" type="s" />
            <arg name="printer_is_accepting_jobs" direction="out" type="b" />
            <arg name="printer_state" direction="out" type="s" />
            <arg name="backend_name" direction="out" type="s"/>
        </signal>
        <signal name="PrinterRemoved">
            <arg name="printer_id" type="s" direction="out"/>
            <arg name="backend_name" type="s" direction="out"/>
        </signal>
        <method name="GetBackendName">
            <arg name="backend_name" direction="out" type="s" />
        </method>
        <method name="ActivateBackend"></method>
        <method name="getDefaultPrinter">
            <arg name="printer_id" direction="out" type="s"/>
        </method>
        <method name="getPrinterState">
            <arg name="printer_id" direction="in" type="s"/>
            <arg name="state" direction="out" type="s"/>
        </method>
        <method name="isAcceptingJobs">
            <arg name="printer_id" direction="in" type="s"/>
            <arg name="is_accepting" direction="out" type="b"/>
        </method>
        <method name="GetAllOptions">
            <arg name="printer_id" direction="in" type="s" />
            <arg name="num_options" direction="out" type="i" />
            <arg name="options" direction="out" type="a(ssia(s))" />
            <!--option contents: option name, default value , number of supported values , array of supported values-->
        </method>
        <method name="getActiveJobsCount">
            <arg name="printer_id" direction="in" type="s"/>
            <arg name="job_count" direction="out" type="i"/>
        </method>
        <method name="getAllJobs">
            <arg name="active_only" direction="in" type="b"/>
            <arg name="num_jobs" direction="out" type="i"/>
            <arg name="jobs" direction="out" type="a(ssssssi)"/>
            <!--job contents: job-id , title, printer-id, user, state , submitted at(time string) , size -->
        </method>
        <method name="cancelJob">
            <arg name="job_id" direction="in" type="s"/>
            <arg name="printer_id" direction="in" type="s"/>
            <arg name="status" direction="out" type="b"/>
        </method>
        <method name="printFile">
            <arg name="printer_id" direction="in" type="s" />
            <arg name="file_path_name" direction="in" type="s"/>
            <arg name="num_settings" direction="in" type="i"/>
            <arg name="settings" direction="in" type="a(ss)"/>
            <arg name="jobid" direction="out" type="s" />
        </method>
        <method name="replace">
            <arg name="previous_dialog_id" direction="in" type="s"/>
        </method>
        <method name="keepAlive"></method>
        <!--Just for testing, will be removed finally-->
        <method name="ping">
            <arg name="printer_id" direction="in" type="s" />
        </method>
    </interface>
</node>
