2.3 KiB
BUD-05
Media optimization endpoints
draft optional
Defines the PUT /media endpoint for processing and optimizing media
PUT /media
The PUT /media endpoint MUST accept binary data in the body of the request and MAY use the Content-Type and Content-Length headers to get the MIME type and size of the media
The server should preform any optimizations or conversions it deems necessary in order to make the media more suitable for distribution
The endpoint MUST respond with a 2xx status and a blob descriptor of the new processed blob
Servers MAY reject media uploads for any reason and should respond with the appropriate HTTP 4xx status code and an error message explaining the reason for the rejection
Upload Authorization
Servers MAY require a media authorization event to identify the uploader
If a server requires a media authorization event it MUST preform the following checks
- The
ttag MUST be set tomedia - MUST contain at least one
xtag matching the sha256 hash of the body of the request
HEAD /media
Servers MUST respond to HEAD requests on the /media endpoint in a similar way to the HEAD /upload endpoint defined in BUD-06
Limitations
This endpoint is intentionally limited to optimizing a single blob with the goal of making it easier to distribute
How the blob is optimized is the sole respirability of the server and the client should have no say in what optimization process is used
The goal of this endpoint is to provide a simple "trusted" optimization endpoint clients can use to optimize media for distribution
If a longer optimization or transformation process is needed, or if the client needs to specify how a blob should be transformed. there are other tools and protocol that should be used.
Client Implementation
Clients MAY let a user selected a "trusted processing" server for uploading images or short videos
Once a server has been selected, the client uploads the original media to the /media endpoint of the trusted server and get the optimized blob back
Then the client can ask the user to sign another upload authorization event for the new optimized blob and call the /mirror endpoint on other servers to distribute the blob