diff --git a/api/src/schema/Message.ts b/api/src/schema/Message.ts
new file mode 100644
index 00000000..8423d706
--- /dev/null
+++ b/api/src/schema/Message.ts
@@ -0,0 +1,82 @@
+import { Embed, EmbedImage } from "@fosscord/server-util";
+import { Length } from "../util/instanceOf";
+
+export const MessageCreateSchema = {
+ $content: new Length(String, 0, 2000),
+ $nonce: String,
+ $tts: Boolean,
+ $flags: BigInt,
+ $embed: {
+ $title: new Length(String, 0, 256), //title of embed
+ $type: String, // type of embed (always "rich" for webhook embeds)
+ $description: new Length(String, 0, 2048), // description of embed
+ $url: String, // url of embed
+ $timestamp: String, // ISO8601 timestamp
+ $color: Number, // color code of the embed
+ $footer: {
+ text: new Length(String, 0, 2048),
+ icon_url: String,
+ proxy_icon_url: String
+ }, // footer object footer information
+ $image: EmbedImage, // image object image information
+ $thumbnail: EmbedImage, // thumbnail object thumbnail information
+ $video: EmbedImage, // video object video information
+ $provider: {
+ name: String,
+ url: String
+ }, // provider object provider information
+ $author: {
+ name: new Length(String, 0, 256),
+ url: String,
+ icon_url: String,
+ proxy_icon_url: String
+ }, // author object author information
+ $fields: new Length(
+ [
+ {
+ name: new Length(String, 0, 256),
+ value: new Length(String, 0, 1024),
+ $inline: Boolean
+ }
+ ],
+ 0,
+ 25
+ )
+ },
+ $allowed_mentions: {
+ $parse: [String],
+ $roles: [String],
+ $users: [String],
+ $replied_user: Boolean
+ },
+ $message_reference: {
+ message_id: String,
+ channel_id: String,
+ $guild_id: String,
+ $fail_if_not_exists: Boolean
+ },
+ $payload_json: String,
+ $file: Object
+};
+
+export interface MessageCreateSchema {
+ content?: string;
+ nonce?: string;
+ tts?: boolean;
+ flags?: bigint;
+ embed?: Embed & { timestamp?: string };
+ allowed_mentions?: {
+ parse?: string[];
+ roles?: string[];
+ users?: string[];
+ replied_user?: boolean;
+ };
+ message_reference?: {
+ message_id: string;
+ channel_id: string;
+ guild_id?: string;
+ fail_if_not_exists: boolean;
+ };
+ payload_json?: string;
+ file?: any;
+}
|