mirror of
https://github.com/hzrd149/blossom.git
synced 2026-10-05 15:38:22 +00:00
41 lines
2.0 KiB
Markdown
41 lines
2.0 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 request body.
|
|
The server SHOULD perform any optimizations or conversions it deems necessary in order to make the media more suitable for distribution.
|
|
|
|
Clients SHOULD include `Content-Type` and `Content-Length` headers specifying the MIME type and size of the data. Clients MAY provide an `X-SHA-256` header containing the lowercase hex-encoded sha256 of the request body. A server MAY use this value to enforce rejection policies or perform authorization checks prior to persisting the blob.
|
|
|
|
On success, the endpoint MUST respond with a `2xx` status code with a [Blob Descriptor](#blob-descriptor) in the response body.
|
|
On failure, the endpoint MUST return an appropriate `4xx` status code and an error message explaining the reason for the rejection.
|
|
|
|
### Upload Authorization
|
|
|
|
Servers MAY require authorization when processing media as defined by [BUD-11](./11.md#endpoint-authorization-requirements).
|
|
|
|
## 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](./06.md)
|
|
|
|
## Limitations
|
|
|
|
The goal of this endpoint is to provide a simple "trusted" optimization endpoint clients can use to optimize media for distribution.
|
|
How the blob is optimized is the sole responsibility of the server and the client should have no say in what optimization process is used.
|
|
|
|
If a longer optimization or transformation process is needed, or if the client needs to specify how a blob should be transformed, other protocols 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 call the `/mirror` endpoint on other servers to distribute the blob.
|