mirror of
https://github.com/hzrd149/blossom.git
synced 2025-12-09 15:18:49 +00:00
42 lines
2.1 KiB
Markdown
42 lines
2.1 KiB
Markdown
# 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](./02.md#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 an `upload` [authorization event](./02.md#upload-authorization-required) to identify the uploader
|
|
|
|
If a server requires an `upload` authorization event it MUST preform all the checks outlined in the [`/upload`](./02.md#upload-authorization-required) endpoint
|
|
|
|
## 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 can upload the original media to the `/media` endpoint of the trusted server and get the optimized blob back
|
|
|
|
Then optionally 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
|