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

<!--
Copyright Contributors to the libdnf project.

This file is part of libdnf: https://github.com/rpm-software-management/libdnf/

Libdnf 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.1 of the License, or
(at your option) any later version.

Libdnf 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 libdnf.  If not, see <https://www.gnu.org/licenses/>.
-->

<node>
<!-- org.rpm.dnf.v0.SessionManager:
   @short_description: Interface to dnf5daemon sessions management
-->
<interface name="org.rpm.dnf.v0.SessionManager">
    <!--
        open_session:
        @options: session configuration - an array of key/value pairs
        @session_object_path: object path to created Session object

        Opens a new session.

        Following configuration options are supported:

            - load_system_repo: bool, default true
                If true information about currently installed packages is loaded.
            - load_available_repos: bool, default true
                If true information about packages available in enabled repositories is loaded.
            - config: map {string: string}
                Override configuration options.
            - releasever: string
                Override releasever variable used for substitutions in repository configurations.
            - locale: string
                Override server locale for this session. Affects language used in various error messages.

        Unknown options are ignored.
    -->
    <method name="open_session">
        <arg name="options" type="a{sv}" direction="in"/>
        <arg name="session_object_path" type="o" direction="out"/>
    </method>

    <!--
        close_session:
        @session_object_path: object path of session to close
        @success: bool whether the requested session was successfully closed

        Close session on given object path.
    -->
    <method name="close_session">
        <arg name="session_object_path" type="o" direction="in" />
        <arg name="success" type="b" direction="out" />
    </method>

</interface>

</node>
