neptune/source/api_data.d

110 lines
1.9 KiB
D

module api_data;
import mir.serde, util: JsonObject;
struct Moderate {
string user_id;
@serdeOptional string reason;
}
struct State {
struct PowerLevels {
short[string] users;
}
struct ACL {
@serdeOptional:
bool allow_ip_literals;
string[] allow = ["*"];
string[] deny;
}
JsonObject content;
string event_id;
string sender;
string type;
}
struct Encrypted {
char[] algorithm;
char[] ciphertext;
char[] device_id;
char[] sender_key;
char[] session_id;
}
struct MSG {
struct Meta {
int h, w;
ulong size;
string mimetype;
}
struct Relates {
struct EvtBase {
string event_id;
}
@serdeOptional @serdeKeys("m.in_reply_to") EvtBase reply;
}
string body;
@serdeOptional @serdeIgnoreDefault string formatted_body;
string msgtype = "m.notice";
@serdeOptional string format = "org.matrix.custom.html";
@serdeOptional @serdeIgnoreDefault:
@serdeKeys("m.relates_to") Relates relates;
string rel_type;
string url;
string filename;
Meta info;
}
struct Sync {
struct StrippedStateEvent {
JsonObject content;
string sender, state_key, type;
}
struct Unsigned {
int age;
string membership, transaction_id;
}
struct Rooms {
struct Invited {
struct IS { StrippedStateEvent[] events; }
IS invite_state;
}
struct Joined {
struct Timeline {
EventWithoutRoomID[] events;
@serdeOptional bool limited;
string prev_batch;
}
struct UNC {
int highlight_count;
int notification_count;
}
@serdeOptional Timeline timeline;
@serdeOptional UNC unread_notifications;
}
@serdeOptional Invited[string] invite;
@serdeOptional Joined[string] join;
}
@serdeOptional Rooms rooms;
string next_batch;
}
struct EventWithoutRoomID {
JsonObject content;
string event_id;
ulong origin_server_ts;
@serdeOptional string sender, state_key, type;
@serdeIgnore string room;
// Unsigned unsigned;
}