aboutsummaryrefslogtreecommitdiff
path: root/lib/csapi/third_party_membership.h
blob: d1261567af5e7388f7fada7652b9042e6bc3bf98 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
/******************************************************************************
 * THIS FILE IS GENERATED - ANY EDITS WILL BE OVERWRITTEN
 */

#pragma once

#include "jobs/basejob.h"

namespace QMatrixClient {
    // Operations

    /// Invite a user to participate in a particular room.
    ///
    /// .. _invite-by-third-party-id-endpoint:
    ///
    /// *Note that there are two forms of this API, which are documented
    /// separately. This version of the API does not require that the inviter
    /// know the Matrix identifier of the invitee, and instead relies on third
    /// party identifiers. The homeserver uses an identity server to perform the
    /// mapping from third party identifier to a Matrix identifier. The other is
    /// documented in the* `joining rooms section`_.
    ///
    /// This API invites a user to participate in a particular room.
    /// They do not start participating in the room until they actually join the
    /// room.
    ///
    /// Only users currently in a particular room can invite other users to
    /// join that room.
    ///
    /// If the identity server did know the Matrix user identifier for the
    /// third party identifier, the homeserver will append a ``m.room.member``
    /// event to the room.
    ///
    /// If the identity server does not know a Matrix user identifier for the
    /// passed third party identifier, the homeserver will issue an invitation
    /// which can be accepted upon providing proof of ownership of the third
    /// party identifier. This is achieved by the identity server generating a
    /// token, which it gives to the inviting homeserver. The homeserver will
    /// add an ``m.room.third_party_invite`` event into the graph for the room,
    /// containing that token.
    ///
    /// When the invitee binds the invited third party identifier to a Matrix
    /// user ID, the identity server will give the user a list of pending
    /// invitations, each containing:
    ///
    /// - The room ID to which they were invited
    ///
    /// - The token given to the homeserver
    ///
    /// - A signature of the token, signed with the identity server's private
    /// key
    ///
    /// - The matrix user ID who invited them to the room
    ///
    /// If a token is requested from the identity server, the homeserver will
    /// append a ``m.room.third_party_invite`` event to the room.
    ///
    /// .. _joining rooms section: `invite-by-user-id-endpoint`_
    class InviteBy3PIDJob : public BaseJob
    {
        public:
        /*! Invite a user to participate in a particular room.
         * \param roomId
         *   The room identifier (not alias) to which to invite the user.
         * \param idServer
         *   The hostname+port of the identity server which should be used for
         * third party identifier lookups. \param medium The kind of address
         * being passed in the address field, for example ``email``. \param
         * address The invitee's third party identifier.
         */
        explicit InviteBy3PIDJob(const QString& roomId, const QString& idServer,
                                 const QString& medium, const QString& address);
    };
} // namespace QMatrixClient