Matrix protocol in OCaml, Eio specialised
1(** Room directory and alias operations. *)
2
3(** {1 Room Aliases} *)
4
5(** Alias resolution result. *)
6type alias_info = {
7 room_id : Matrix_proto.Id.Room_id.t;
8 servers : string list;
9}
10
11(** Resolve a room alias to a room ID.
12
13 Returns the room ID and a list of servers that know about the room. *)
14val resolve_alias :
15 Client.t ->
16 alias:Matrix_proto.Id.Room_alias.t ->
17 (alias_info, Error.t) result
18
19(** Create a room alias pointing to a room. *)
20val create_alias :
21 Client.t ->
22 alias:Matrix_proto.Id.Room_alias.t ->
23 room_id:Matrix_proto.Id.Room_id.t ->
24 (unit, Error.t) result
25
26(** Delete a room alias. *)
27val delete_alias :
28 Client.t ->
29 alias:Matrix_proto.Id.Room_alias.t ->
30 (unit, Error.t) result
31
32(** {1 Room Visibility} *)
33
34(** Room visibility in the directory. *)
35type visibility = [ `Public | `Private ]
36
37(** Get a room's visibility in the directory. *)
38val get_visibility :
39 Client.t ->
40 room_id:Matrix_proto.Id.Room_id.t ->
41 (visibility, Error.t) result
42
43(** Set a room's visibility in the directory.
44
45 Requires appropriate permissions in the room. *)
46val set_visibility :
47 Client.t ->
48 room_id:Matrix_proto.Id.Room_id.t ->
49 visibility:visibility ->
50 (unit, Error.t) result
51
52(** {1 Room Directory Search} *)
53
54(** Search filter for public rooms. *)
55type search_filter = {
56 generic_search_term : string option;
57 (** Search term to filter room names and topics. *)
58 room_types : string list option;
59 (** Filter by room types (e.g., "m.space"). None includes all types. *)
60}
61
62(** Public room search result. *)
63type search_result = {
64 chunk : Rooms.public_room list;
65 next_batch : string option;
66 prev_batch : string option;
67 total_room_count_estimate : int option;
68}
69
70(** Search the public room directory.
71
72 @param server Server to query (default: local homeserver).
73 @param limit Maximum number of rooms to return.
74 @param since Pagination token.
75 @param filter Search filter. *)
76val search :
77 Client.t ->
78 ?server:string ->
79 ?limit:int ->
80 ?since:string ->
81 ?filter:search_filter ->
82 unit ->
83 (search_result, Error.t) result