From a491279b67f0273570f1be9b63ef0a46e3eec3c8 Mon Sep 17 00:00:00 2001 From: Rory& Date: Sun, 23 Aug 2026 16:37:32 +0200 Subject: [PATCH] Add missing attachment fields --- assets/openapi.json | Bin 1059690 -> 1057690 bytes assets/schemas.json | Bin 484263 -> 482221 bytes src/schemas/api/messages/Attachments.ts | 44 ++++++++++++++++-- .../uncategorised/MessageCreateSchema.ts | 22 +++++++-- 4 files changed, 57 insertions(+), 9 deletions(-) diff --git a/assets/openapi.json b/assets/openapi.json index e90b59ff926f398fb8756554cf8390059e8fb1bb..ab7f4553246723830afe232d516b00f7ad893ae4 100644 GIT binary patch delta 1126 zcmc&zT}V@580P$cXSI1u(6pM{)QLg5#Fe1ta6w+0Xas8ebLqgJ)0~=8IH8zVadf!{ zs*A3=s0o76fhd{XC>S_`gf7BCSky&~F0z}j<5p1?K{s{re7w9oeDCu;-}Am(cidQZ zgs)Kd>Ab55xACRCGwAn({8(BLN@HE3i1dEe0>w#N;cg>F%u52%Whln66U?vXy4YVJKGG@>@f)9PQ0UNSzef z@y3Yc2R#Rch_y&B^2cEtVe_Nz>Qj)sLQQ1K%V=OVaO#wopLhwIlNZ!Ahd?y5B&raK zhxjzTC2$llWl+}XV&-UdEvDCLBjQDj1FOwkL3Ug+z!X!*Ky{O^jk-^K5ZmRf0E0t# z!VdX71DJTuXO0!TpQQ=w8uI(17w&elqn;5z%nO_usZH(A7B^WJ=j#i|F67?iqJ~T< zdxD{WFCcp`InP`}*E69W>1D1N^IZ(V(-6szG&BinLlem}qv|bBxNN9WCxn&Ejc`9; z{C^xA3$R`>FyspL4)=QpqLXUHY?!hWtrPV32QEfETODZJ6gX_W<}EQZu|^$Lh3t2o z($6{vLYV%@rDw{!AuZ6wNPOm5Bs-W~B+|U~$2|XUiI87VcGyPAk*xp9En39JD5;31 z*g=?@1S49;ND1U#Vpn^7>a=v(q*r1wrhs9xN0GZU|koi+>J6*~!}?C>22# z4CDg^4YCr#;|)5C*{55cV<7ZgleSydxd~Z&J~0V=3eRVqo0B`?-QwFG6iy&H7J_ zDYW0kFql8_F`!)3HlB=g8%vjlx%>GEd60AEX(82hZQe(t+ew1QX9>P7APlPwITy;Z zN8xr6=^@#cDtJ>slJ8!H(?3vuxRxvw95D*Uv{-@WOF@E>qL_i^HMB_j?nICPjYl{~ z=)aWNPO)3ccc$USi$%&fx^Coe>}Ko%ZGh4d|FILi3(D1m;(C z3fST@fi)oy0OeF*i`#A_ciZl>87NOhhKQRNrF1aSlru#qZ*JhjzCJ}x=K!={EB(Ij zg1;|)u-1u;GT|RI`9?|G{a)aR>S|egl{kkKcSa$_oCT2L(O7oWC}r0sG0%{pnFXp9 z6KS@mH{Xx(eGNd)jQ=CS-)Q%X3ZX4jMUPT|xR5;C(~Hej8N}*B@9%mIqNc$d6lC55 zdbzSdM>Xt}gpzX?r=T{DPQuDMI@D6CBBcnWC{e0-?lT-;#xKBF!Dqo6lNN15ue4~F ziKWXrJ&qSdm6T`XTr!yR&aM3Cwcp&WJOK}N(PK50z)sx`Q_4#Z`H+r7zOolgm`G#aksveIjpihAMQe zhNd0=Q2dH?bkgv~i0LwU~a#f00~i1dKrIJ7dM z6y{5u1K-EUMs?fSVZW7S{8pqDvSIoHUktB}3Rt9ly`cfIO3sRoF*i9Mx*e6E=@OAPv=)P-cU6X%DrMM~w<*0;7UaVjl*Fg;46GWyhS&*{uvfi}W*!3m( zMlh|-kJ6{AQm{81QdHN@@&V?H)w0=54bVV5QW>%%Q%oK>>-c?``^p{old;4!*Ipne z0%~u6_=Lhn)e1xzS1l$2@laSk!(uO6OxbiI8j<@jf5lLakr-FaFDEfCCs9ZhKK8ng-Df&`*TpXpZod0k s7tW!2(SpZAboA;7R|xMn60z7M^7@2J{9Lr+HvZybYxNHe;{7c@0HKeEJ^%m! delta 1625 zcmeH{KWG#|6vo+^o83FzY%bxFu;TquBO%etEfy(KoM$6gWh;ZRF!dElunHQM3j~5# zWXXabf+S}UQYk6afm9nTl(RVqDJ&$1AgP2aEbMf4_twplhz2ZEEX>ZEdGpPC-)~;> z?B@GyZAp4f28YqUM=v-wQDLgI8G=uaw z$si2D{Yc7A!Mx@e6Dd?IIvT8OIZVUcbJ~YBT~VE`#bl7NN&3BvsC{SS|3!eOZLKBA zuyaZwuFVU5&M71D*?&;nNvFcfD=BAoN`-rerW|+joYQ{M2fImnF+DHkuyR*YczJ|; z5tTbF=JD-6aWTIU{ZbG)!k=Jg=C@8{nL_}TnZ4*OhPZCvsl9$~OGMhDQ|p&fe(4sv2|QY?I8 z(d!`&#b{TEM8=;AvFMmH;KDlw=>zGacf~F=d*sXhVsZ77Kk(3u+4--+Lg5i3ap7Uy z2PGczNIBV^j`UhoB<)q*gI-W1@`Zm1uUi9-`KT9jo2-QVGp0E|joUDn$kg)g9uXfE zUxM%MvDpe{EULiTU=LAyD)qq7Wf?Qu>?Z7fc@b`dPNKwV5~9l8xVpj4V5}@@eCxbC t^aCresLJ>A3eiqE{nImjq<6. */ +import { PartialUser } from "@spacebar/schemas"; + export interface PublicAttachment { - filename: string; // name of file attached - size: number; // size of file in bytes - height?: number; // height of file (if image) - width?: number; // width of file (if image) + filename: string; + size: number; content_type?: string; url: string; - proxy_url: string; + proxy_url: string; // only relevant for images/video, but returns a 415 Unsupported Media Type for others, always included + description?: string; // alt text + flags?: AttachmentFlags; + + // image metadata + height?: number; + width?: number; + + // content scanning + content_scan_version?: number; + + // thumbhash - https://github.com/evanw/thumbhash + placeholder_version?: number; + placeholder?: string; + + // voice messages + duration_secs?: number; + waveform?: string; // base64 byte array + + // clips + title?: string; // clips only? Documentation kinda sucks... + clip_created_at?: Date; + clip_participants?: PartialUser[]; + // application?: PartialApplication[]; +} + +export enum AttachmentFlags { + IS_CLIP = 1 << 0, + IS_THUMBNAIL = 1 << 1, + IS_REMIX = 1 << 2, + IS_SPOILER = 1 << 3, + CONTAINS_EXPLICIT_MEDIA = 1 << 4, + IS_ANIMATED = 1 << 5, + CONTAINS_GORE_CONTENT = 1 << 6, + CONTAINS_SELF_HARM_CONTENT = 1 << 7, } diff --git a/src/schemas/uncategorised/MessageCreateSchema.ts b/src/schemas/uncategorised/MessageCreateSchema.ts index ed0387b4e..585b849ea 100644 --- a/src/schemas/uncategorised/MessageCreateSchema.ts +++ b/src/schemas/uncategorised/MessageCreateSchema.ts @@ -19,14 +19,28 @@ import { Snowflake } from "../Identifiers"; import { InteractionType, AllowedMentions, MessageReference, ApplicationCommandType, BaseMessageComponents, Embed, PollAnswer, PollMedia, PublicUser } from "@spacebar/schemas"; -export type MessageCreateAttachment = { - id: string; +export type BaseMessageCreateAttachment = { filename: string; + title?: string; // clips only? + description?: string; // alt text + duration_secs?: number; //flat + waveform?: string; //base64 byte array + + is_clip?: boolean; + is_thumbnail?: boolean; + is_remix?: boolean; + is_spoiler?: boolean; + + clip_created_at?: Date; + clip_participant_ids?: Snowflake[]; }; -export type MessageCreateCloudAttachment = { +export type MessageCreateAttachment = BaseMessageCreateAttachment & { + id: string; +}; + +export type MessageCreateCloudAttachment = BaseMessageCreateAttachment & { id?: string; - filename: string; uploaded_filename: string; original_content_type?: string; };