Nightcord Storage v2.0.0

Aliyun OSS proxy with SEKAI v2 resource facade. Legacy upload paths remain; new clients should prefer /v2/upload and typed resolve URLs.

Hosts

Storage (upload + legacy) https://storage.nightcord.de5.net
R2 facade (public media) https://r2.nightcord.de5.net

Both hosts hit this Worker. Prefer r2.* for public SEKAI media GET; uploads may use either host.

SEKAI v2 — prefer this

PUT/v2/upload

Headers X-Filename, Content-Type, Content-Length
optional: X-Sekai-Kind, X-Image-Width, X-Image-Height
Bodyraw file bytes
Responseuuid, type, size (kB), name, kind, url, optional w/h
curl -X PUT https://r2.nightcord.de5.net/v2/upload -H "X-Filename: photo.jpg" -H "Content-Type: image/jpeg" --data-binary @photo.jpg

GET Resolve

Message payload (Nightcord / SEKAI markup)

<$SEKAI:Image:w=…;h=…;name=…:{uuid}>
<$SEKAI:Files:type=…;size=…;name=…:{uuid}>
<$SEKAI:Stamp:custom=true:{uuid}>

Legacy — still supported

PUT/{ key, url, size } where key is {uid}/{fileUuid}.ext

GETDEL/{key} · chunked under /chunked/…

Use for older clients and historical messages. New Nightcord builds use v2.

Machine-readable / agents

GET /?format=json · GET /?format=md · /v2