libQuotient
A Qt library for building matrix clients
third_party_membership.h
Go to the documentation of this file.
1 // THIS FILE IS GENERATED - ANY EDITS WILL BE OVERWRITTEN
2 
3 #pragma once
4 
5 #include <Quotient/jobs/basejob.h>
6 
7 namespace Quotient {
8 
9 //! \brief Invite a user to participate in a particular room.
10 //!
11 //! *Note that there are two forms of this API, which are documented separately.
12 //! This version of the API does not require that the inviter know the Matrix
13 //! identifier of the invitee, and instead relies on third-party identifiers.
14 //! The homeserver uses an identity server to perform the mapping from
15 //! third-party identifier to a Matrix identifier. The other is documented in the*
16 //! [joining rooms section](/client-server-api/#post_matrixclientv3roomsroomidinvite).
17 //!
18 //! This API invites a user to participate in a particular room.
19 //! They do not start participating in the room until they actually join the
20 //! room.
21 //!
22 //! Only users currently in a particular room can invite other users to
23 //! join that room.
24 //!
25 //! If the identity server did know the Matrix user identifier for the
26 //! third-party identifier, the homeserver will append a `m.room.member`
27 //! event to the room.
28 //!
29 //! If the identity server does not know a Matrix user identifier for the
30 //! passed third-party identifier, the homeserver will issue an invitation
31 //! which can be accepted upon providing proof of ownership of the third-
32 //! party identifier. This is achieved by the identity server generating a
33 //! token, which it gives to the inviting homeserver. The homeserver will
34 //! add an `m.room.third_party_invite` event into the graph for the room,
35 //! containing that token.
36 //!
37 //! When the invitee binds the invited third-party identifier to a Matrix
38 //! user ID, the identity server will give the user a list of pending
39 //! invitations, each containing:
40 //!
41 //! - The room ID to which they were invited
42 //!
43 //! - The token given to the homeserver
44 //!
45 //! - A signature of the token, signed with the identity server's private key
46 //!
47 //! - The matrix user ID who invited them to the room
48 //!
49 //! If a token is requested from the identity server, the homeserver will
50 //! append a `m.room.third_party_invite` event to the room.
51 class QUOTIENT_API InviteBy3PIDJob : public BaseJob {
52 public:
53  //! \param roomId
54  //! The room identifier (not alias) to which to invite the user.
55  //!
56  //! \param idServer
57  //! The hostname+port of the identity server which should be used for third-party identifier
58  //! lookups.
59  //!
60  //! \param idAccessToken
61  //! An access token previously registered with the identity server. Servers
62  //! can treat this as optional to distinguish between r0.5-compatible clients
63  //! and this specification version.
64  //!
65  //! \param medium
66  //! The kind of address being passed in the address field, for example
67  //! `email` (see [the list of recognised values](/appendices/#3pid-types)).
68  //!
69  //! \param address
70  //! The invitee's third-party identifier.
71  explicit InviteBy3PIDJob(const QString& roomId, const QString& idServer,
72  const QString& idAccessToken, const QString& medium,
73  const QString& address);
74 };
75 
76 } // namespace Quotient